@@ -6,10 +6,6 @@ Compiling the source code:
Put the files in the right directories:
%make install
-If you are using the CVS code or need your own kernel includes, do this
-instead (change the include directory to the appropriate one):
-%make install KERNEL_INCLUDES=/usr/src/linux/include
-
If you want to make a static binary for ebtables, containing all the
extensions, without shared libraries, do this (this will make a
binary called 'static', which you can rename):
@@ -50,7 +46,7 @@ Contains an example to receive and parse netlink messages containing
packets seen by the ebtables ulog watcher.
Compile with:
-%make test_ulog KERNEL_INCLUDES=/usr/src/linux/include
+%make test_ulog
Usage:
%examples/ulog/test_ulog NETLINK_GROUP
@@ -32,8 +32,6 @@ useful_functions.o ebtables.o
OBJECTS:=$(OBJECTS2) $(EXT_OBJS) $(EXT_LIBS)
-KERNEL_INCLUDES?=include/
-
ETHERTYPESPATH?=$(ETCDIR)
ETHERTYPESFILE:=$(ETHERTYPESPATH)/ethertypes
@@ -69,45 +67,45 @@ PROGSPECSD:=-DPROGVERSION=\"$(PROGVERSION)\" \
all: ebtables ebtables-restore
communication.o: communication.c include/ebtables_u.h
- $(CC) $(CFLAGS) $(CFLAGS_SH_LIB) $(PROGSPECS) -c -o $@ $< -I$(KERNEL_INCLUDES)
+ $(CC) $(CFLAGS) $(CFLAGS_SH_LIB) $(PROGSPECS) -c -o $@ $< -Iinclude/
libebtc.o: libebtc.c include/ebtables_u.h
- $(CC) $(CFLAGS) $(CFLAGS_SH_LIB) $(PROGSPECS) -c -o $@ $< -I$(KERNEL_INCLUDES)
+ $(CC) $(CFLAGS) $(CFLAGS_SH_LIB) $(PROGSPECS) -c -o $@ $< -Iinclude/
useful_functions.o: useful_functions.c include/ebtables_u.h
- $(CC) $(CFLAGS) $(CFLAGS_SH_LIB) $(PROGSPECS) -c -o $@ $< -I$(KERNEL_INCLUDES)
+ $(CC) $(CFLAGS) $(CFLAGS_SH_LIB) $(PROGSPECS) -c -o $@ $< -Iinclude/
getethertype.o: getethertype.c include/ethernetdb.h
$(CC) $(CFLAGS) $(CFLAGS_SH_LIB) $(PROGSPECS) -c -o $@ $< -Iinclude/
ebtables.o: ebtables.c include/ebtables_u.h
- $(CC) $(CFLAGS) $(CFLAGS_SH_LIB) $(PROGSPECS) -c -o $@ $< -I$(KERNEL_INCLUDES)
+ $(CC) $(CFLAGS) $(CFLAGS_SH_LIB) $(PROGSPECS) -c -o $@ $< -Iinclude/
ebtables-standalone.o: ebtables-standalone.c include/ebtables_u.h
- $(CC) $(CFLAGS) $(CFLAGS_SH_LIB) $(PROGSPECS) -c $< -o $@ -I$(KERNEL_INCLUDES)
+ $(CC) $(CFLAGS) $(CFLAGS_SH_LIB) $(PROGSPECS) -c $< -o $@ -Iinclude/
libebtc.so: $(OBJECTS2)
$(CC) -shared $(LDFLAGS) -Wl,-soname,libebtc.so -o libebtc.so -lc $(OBJECTS2)
ebtables: $(OBJECTS) ebtables-standalone.o libebtc.so
- $(CC) $(CFLAGS) $(CFLAGS_SH_LIB) $(LDFLAGS) -o $@ ebtables-standalone.o -I$(KERNEL_INCLUDES) -L. -Lextensions -lebtc $(EXT_LIBSI) \
+ $(CC) $(CFLAGS) $(CFLAGS_SH_LIB) $(LDFLAGS) -o $@ ebtables-standalone.o -Iinclude/ -L. -Lextensions -lebtc $(EXT_LIBSI) \
-Wl,-rpath,$(LIBDIR)
ebtablesu: ebtablesu.c
- $(CC) $(CFLAGS) $(PROGSPECSD) $< -o $@
+ $(CC) $(CFLAGS) $(PROGSPECSD) $< -o $@ -Iinclude/
ebtablesd.o: ebtablesd.c include/ebtables_u.h
- $(CC) $(CFLAGS) $(PROGSPECSD) -c $< -o $@ -I$(KERNEL_INCLUDES)
+ $(CC) $(CFLAGS) $(PROGSPECSD) -c $< -o $@ -Iinclude/
ebtablesd: $(OBJECTS) ebtablesd.o libebtc.so
- $(CC) $(CFLAGS) -o $@ ebtablesd.o -I$(KERNEL_INCLUDES) -L. -Lextensions -lebtc $(EXT_LIBSI) \
+ $(CC) $(CFLAGS) -o $@ ebtablesd.o -Iinclude/ -L. -Lextensions -lebtc $(EXT_LIBSI) \
-Wl,-rpath,$(LIBDIR)
ebtables-restore.o: ebtables-restore.c include/ebtables_u.h
- $(CC) $(CFLAGS) $(PROGSPECS) -c $< -o $@ -I$(KERNEL_INCLUDES)
+ $(CC) $(CFLAGS) $(PROGSPECS) -c $< -o $@ -Iinclude/
ebtables-restore: $(OBJECTS) ebtables-restore.o libebtc.so
- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ ebtables-restore.o -I$(KERNEL_INCLUDES) -L. -Lextensions -lebtc $(EXT_LIBSI) \
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ ebtables-restore.o -Iinclude/ -L. -Lextensions -lebtc $(EXT_LIBSI) \
-Wl,-rpath,$(LIBDIR)
.PHONY: daemon
@@ -136,7 +134,7 @@ static: extensions/ebt_*.c extensions/ebtable_*.c ebtables.c communication.c ebt
printf "extern void %s();\n" _t_$${arg}_init >> include/ebtables_u.h ; \
done ; \
printf "\n\tpseudomain(argc, argv);\n\treturn 0;\n}\n" >> ebtables-standalone.c ;\
- $(CC) $(CFLAGS) $(LDFLAGS) $(PROGSPECS) -o $@ $^ -I$(KERNEL_INCLUDES) -Iinclude ; \
+ $(CC) $(CFLAGS) $(LDFLAGS) $(PROGSPECS) -o $@ $^ -Iinclude/ ; \
for arg in $(EXT_FUNC) \
; do \
sed "s/ .*_init/ _init/" extensions/ebt_$${arg}.c > extensions/ebt_$${arg}.c_ ; \
@@ -206,18 +204,18 @@ release:
rm -rf $(CVSDIRS)
mkdir -p include/linux/netfilter_bridge
install -m 0644 -o root -g root \
- $(KERNEL_INCLUDES)/linux/netfilter_bridge.h include/linux/
+ include/linux/netfilter_bridge.h include/linux/
# To keep possible compile error complaints about undefined ETH_P_8021Q
# off my back
install -m 0644 -o root -g root \
- $(KERNEL_INCLUDES)/linux/if_ether.h include/linux/
+ include/linux/if_ether.h include/linux/
install -m 0644 -o root -g root \
- $(KERNEL_INCLUDES)/linux/types.h include/linux/
+ include/linux/types.h include/linux/
install -m 0644 -o root -g root \
- $(KERNEL_INCLUDES)/linux/netfilter_bridge/*.h \
+ include/linux/netfilter_bridge/*.h \
include/linux/netfilter_bridge/
install -m 0644 -o root -g root \
- include/ebtables.h include/linux/netfilter_bridge/
+ include/ebtables_u.h include/linux/netfilter_bridge/
make clean
touch *
touch extensions/*
@@ -238,7 +236,7 @@ rpmbuild:
.PHONY: test_ulog
test_ulog: examples/ulog/test_ulog.c getethertype.o
- $(CC) $(CFLAGS) $< -o test_ulog -I$(KERNEL_INCLUDES) -lc \
+ $(CC) $(CFLAGS) $< -o test_ulog -Iinclude/ -lc \
getethertype.o
mv test_ulog examples/ulog/
@@ -52,7 +52,7 @@ int main(int argc_, char *argv_[])
char *argv[EBTD_ARGC_MAX], *args[4], name[] = "mkdir",
mkdir_option[] = "-p", mkdir_dir[] = EBTD_PIPE_DIR,
cmdline[EBTD_CMDLINE_MAXLN];
- int readfd, base = 0, offset = 0, n = 0, ret = 0, quotemode = 0;
+ int readfd, base = 0, offset = 0, n = 0, quotemode = 0;
/* Make sure the pipe directory exists */
args[0] = name;
@@ -74,19 +74,16 @@ int main(int argc_, char *argv_[])
if (mkfifo(EBTD_PIPE, 0600) < 0 && errno != EEXIST) {
printf("Error creating FIFO " EBTD_PIPE "\n");
- ret = -1;
goto do_exit;
}
if ((readfd = open(EBTD_PIPE, O_RDONLY | O_NONBLOCK, 0)) == -1) {
perror("open");
- ret = -1;
goto do_exit;
}
if (signal(SIGPIPE, sigpipe_handler) == SIG_ERR) {
perror("signal");
- ret = -1;
goto do_exit;
}
@@ -9,7 +9,7 @@
* Start this application somewhere:
* test_ulog NLGROUP
*
- * compile with make test_ulog KERNEL_INCLUDES=<path_to_kernel_include_dir>
+ * compile with make test_ulog
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -43,7 +43,7 @@
#include <netinet/ip_icmp.h>
#include "../../include/ebtables_u.h"
#include "../../include/ethernetdb.h"
-#include <linux/netfilter_bridge/ebt_ulog.h>
+#include "linux/netfilter_bridge/ebt_ulog.h"
/* <linux/if_vlan.h> doesn't hand this to userspace :-( */
#define VLAN_HLEN 4
@@ -23,8 +23,8 @@ extensions/libebtable_%.so: extensions/ebtable_%.so
mv $< $@
extensions/ebt_%.o: extensions/ebt_%.c include/ebtables_u.h
- $(CC) $(CFLAGS) $(CFLAGS_SH_LIB) $(PROGSPECS) -c -o $@ $< -I$(KERNEL_INCLUDES)
+ $(CC) $(CFLAGS) $(CFLAGS_SH_LIB) $(PROGSPECS) -c -o $@ $< -Iinclude/
extensions/ebtable_%.o: extensions/ebtable_%.c
- $(CC) $(CFLAGS) $(CFLAGS_SH_LIB) $(PROGSPECS) -c -o $@ $< -I$(KERNEL_INCLUDES)
+ $(CC) $(CFLAGS) $(CFLAGS_SH_LIB) $(PROGSPECS) -c -o $@ $< -Iinclude/
@@ -12,7 +12,7 @@
#include <getopt.h>
#include "../include/ebtables_u.h"
#include "../include/ethernetdb.h"
-#include <linux/netfilter_bridge/ebt_802_3.h>
+#include "linux/netfilter_bridge/ebt_802_3.h"
#define _802_3_SAP '1'
#define _802_3_TYPE '2'
@@ -16,7 +16,7 @@
#include <netinet/ether.h>
#include "../include/ethernetdb.h"
#include <linux/if_ether.h>
-#include <linux/netfilter_bridge/ebt_among.h>
+#include "linux/netfilter_bridge/ebt_among.h"
#include <sys/mman.h>
#include <sys/stat.h>
#include <fcntl.h>
@@ -14,7 +14,7 @@
#include "../include/ebtables_u.h"
#include "../include/ethernetdb.h"
#include <linux/if_ether.h>
-#include <linux/netfilter_bridge/ebt_arp.h>
+#include "linux/netfilter_bridge/ebt_arp.h"
#define ARP_OPCODE '1'
#define ARP_HTYPE '2'
@@ -13,7 +13,7 @@
#include <getopt.h>
#include "../include/ebtables_u.h"
#include <netinet/ether.h>
-#include <linux/netfilter_bridge/ebt_arpreply.h>
+#include "linux/netfilter_bridge/ebt_arpreply.h"
static int mac_supplied;
@@ -16,7 +16,7 @@
#include <getopt.h>
#include <netdb.h>
#include "../include/ebtables_u.h"
-#include <linux/netfilter_bridge/ebt_ip.h>
+#include "linux/netfilter_bridge/ebt_ip.h"
#define IP_SOURCE '1'
#define IP_DEST '2'
@@ -17,7 +17,7 @@
#include <getopt.h>
#include <netdb.h>
#include "../include/ebtables_u.h"
-#include <linux/netfilter_bridge/ebt_ip6.h>
+#include "linux/netfilter_bridge/ebt_ip6.h"
@@ -14,7 +14,7 @@
#include <getopt.h>
#include <errno.h>
#include "../include/ebtables_u.h"
-#include <linux/netfilter_bridge/ebt_limit.h>
+#include "linux/netfilter_bridge/ebt_limit.h"
#define EBT_LIMIT_AVG "3/hour"
#define EBT_LIMIT_BURST 5
@@ -11,7 +11,7 @@
#include <string.h>
#include <getopt.h>
#include "../include/ebtables_u.h"
-#include <linux/netfilter_bridge/ebt_log.h>
+#include "linux/netfilter_bridge/ebt_log.h"
/*
* copied from syslog.h
@@ -11,7 +11,7 @@
#include <string.h>
#include <getopt.h>
#include "../include/ebtables_u.h"
-#include <linux/netfilter_bridge/ebt_mark_t.h>
+#include "linux/netfilter_bridge/ebt_mark_t.h"
static int mark_supplied;
@@ -11,7 +11,7 @@
#include <string.h>
#include <getopt.h>
#include "../include/ebtables_u.h"
-#include <linux/netfilter_bridge/ebt_mark_m.h>
+#include "linux/netfilter_bridge/ebt_mark_m.h"
#define MARK '1'
@@ -12,7 +12,7 @@
#include <getopt.h>
#include "../include/ebtables_u.h"
#include <netinet/ether.h>
-#include <linux/netfilter_bridge/ebt_nat.h>
+#include "linux/netfilter_bridge/ebt_nat.h"
static int to_source_supplied, to_dest_supplied;
@@ -15,7 +15,7 @@
#include <string.h>
#include <getopt.h>
#include "../include/ebtables_u.h"
-#include <linux/netfilter_bridge/ebt_nflog.h>
+#include "linux/netfilter_bridge/ebt_nflog.h"
enum {
NFLOG_GROUP = 0x1,
@@ -13,7 +13,7 @@
#include <netdb.h>
#include "../include/ebtables_u.h"
#include <linux/if_packet.h>
-#include <linux/netfilter_bridge/ebt_pkttype.h>
+#include "linux/netfilter_bridge/ebt_pkttype.h"
char *classes[] =
{
@@ -11,7 +11,7 @@
#include <string.h>
#include <getopt.h>
#include "../include/ebtables_u.h"
-#include <linux/netfilter_bridge/ebt_redirect.h>
+#include "linux/netfilter_bridge/ebt_redirect.h"
#define REDIRECT_TARGET '1'
static const struct option opts[] =
@@ -11,7 +11,7 @@
#include <stdlib.h>
#include <getopt.h>
#include "../include/ebtables_u.h"
-#include <linux/netfilter_bridge/ebt_stp.h>
+#include "linux/netfilter_bridge/ebt_stp.h"
#define STP_TYPE 'a'
#define STP_FLAGS 'b'
@@ -14,7 +14,7 @@
#include <getopt.h>
#include "../include/ebtables_u.h"
#include <sys/time.h>
-#include <linux/netfilter_bridge/ebt_ulog.h>
+#include "linux/netfilter_bridge/ebt_ulog.h"
#define CP_NO_LIMIT_S "default_cprange"
#define CP_NO_LIMIT_N 0
@@ -14,7 +14,7 @@
#include <ctype.h>
#include "../include/ebtables_u.h"
#include "../include/ethernetdb.h"
-#include <linux/netfilter_bridge/ebt_vlan.h>
+#include "linux/netfilter_bridge/ebt_vlan.h"
#include <linux/if_ether.h>
#define NAME_VLAN_ID "id"
@@ -25,7 +25,7 @@
#define EBTABLES_U_H
#include <netinet/in.h>
#include <netinet/ether.h>
-#include <linux/netfilter_bridge/ebtables.h>
+#include "linux/netfilter_bridge/ebtables.h"
#include <linux/netfilter/x_tables.h>
#ifndef IPPROTO_SCTP
@@ -1,7 +1,7 @@
#ifndef __LINUX_BRIDGE_EBT_802_3_H
#define __LINUX_BRIDGE_EBT_802_3_H
-#include <linux/types.h>
+#include "linux/types.h"
#include <linux/if_ether.h>
#define EBT_802_3_SAP 0x01
@@ -1,7 +1,7 @@
#ifndef __LINUX_BRIDGE_EBT_AMONG_H
#define __LINUX_BRIDGE_EBT_AMONG_H
-#include <linux/types.h>
+#include "linux/types.h"
#define EBT_AMONG_DST 0x01
#define EBT_AMONG_SRC 0x02
@@ -1,7 +1,7 @@
#ifndef __LINUX_BRIDGE_EBT_ARP_H
#define __LINUX_BRIDGE_EBT_ARP_H
-#include <linux/types.h>
+#include "linux/types.h"
#define EBT_ARP_OPCODE 0x01
#define EBT_ARP_HTYPE 0x02
@@ -16,7 +16,7 @@
#ifndef __LINUX_BRIDGE_EBT_IP_H
#define __LINUX_BRIDGE_EBT_IP_H
-#include <linux/types.h>
+#include "linux/types.h"
#define EBT_IP_SOURCE 0x01
#define EBT_IP_DEST 0x02
@@ -12,7 +12,7 @@
#ifndef __LINUX_BRIDGE_EBT_IP6_H
#define __LINUX_BRIDGE_EBT_IP6_H
-#include <linux/types.h>
+#include "linux/types.h"
#define EBT_IP6_SOURCE 0x01
#define EBT_IP6_DEST 0x02
@@ -1,7 +1,7 @@
#ifndef __LINUX_BRIDGE_EBT_LIMIT_H
#define __LINUX_BRIDGE_EBT_LIMIT_H
-#include <linux/types.h>
+#include "linux/types.h"
#define EBT_LIMIT_MATCH "limit"
@@ -1,7 +1,7 @@
#ifndef __LINUX_BRIDGE_EBT_LOG_H
#define __LINUX_BRIDGE_EBT_LOG_H
-#include <linux/types.h>
+#include "linux/types.h"
#define EBT_LOG_IP 0x01 /* if the frame is made by ip, log the ip information */
#define EBT_LOG_ARP 0x02
@@ -1,7 +1,7 @@
#ifndef __LINUX_BRIDGE_EBT_MARK_M_H
#define __LINUX_BRIDGE_EBT_MARK_M_H
-#include <linux/types.h>
+#include "linux/types.h"
#define EBT_MARK_AND 0x01
#define EBT_MARK_OR 0x02
@@ -1,7 +1,7 @@
#ifndef __LINUX_BRIDGE_EBT_NFLOG_H
#define __LINUX_BRIDGE_EBT_NFLOG_H
-#include <linux/types.h>
+#include "linux/types.h"
#define EBT_NFLOG_MASK 0x0
@@ -1,7 +1,7 @@
#ifndef __LINUX_BRIDGE_EBT_PKTTYPE_H
#define __LINUX_BRIDGE_EBT_PKTTYPE_H
-#include <linux/types.h>
+#include "linux/types.h"
struct ebt_pkttype_info {
__u8 pkt_type;
@@ -1,7 +1,7 @@
#ifndef __LINUX_BRIDGE_EBT_STP_H
#define __LINUX_BRIDGE_EBT_STP_H
-#include <linux/types.h>
+#include "linux/types.h"
#define EBT_STP_TYPE 0x0001
@@ -1,7 +1,7 @@
#ifndef _EBT_ULOG_H
#define _EBT_ULOG_H
-#include <linux/types.h>
+#include "linux/types.h"
#define EBT_ULOG_DEFAULT_NLGROUP 0
#define EBT_ULOG_DEFAULT_QTHRESHOLD 1
@@ -1,7 +1,7 @@
#ifndef __LINUX_BRIDGE_EBT_VLAN_H
#define __LINUX_BRIDGE_EBT_VLAN_H
-#include <linux/types.h>
+#include "linux/types.h"
#define EBT_VLAN_ID 0x01
#define EBT_VLAN_PRIO 0x02
@@ -13,9 +13,9 @@
#ifndef __LINUX_BRIDGE_EFF_H
#define __LINUX_BRIDGE_EFF_H
-#include <linux/types.h>
+#include "linux/types.h"
#include <linux/if.h>
-#include <linux/netfilter_bridge.h>
+#include "linux/netfilter_bridge.h"
#define EBT_TABLE_MAXNAMELEN 32
#define EBT_CHAIN_MAXNAMELEN EBT_TABLE_MAXNAMELEN
Incorporate Jan Engelhardt's patch: "Since UAPI headers are shipped since commit ebtables-2.0.10-4-8-gf4bdc80, "-Iinclude" must always be used ever since. Remove the KERNEL_INCLUDES make variable for good. including suggested and other amendments into Duncan Roe's patch to replace angle brackets with double quotes in #include statemenmts that reference local files (becuase of -Iinclude). This alerts developers and maintainers that they are building against a kernel header snapshot which may not correspond with structures in the current kernel. Testing of Makefile targets discovered a set-but-never-used variable in ebtablesd.c: this (ret) is removed. Signed-off-by: Duncan Roe <duncan_roe@optusnet.com.au> --- INSTALL | 6 +---- Makefile | 38 +++++++++++++--------------- ebtablesd.c | 5 +--- examples/ulog/test_ulog.c | 4 +-- extensions/Makefile | 4 +-- extensions/ebt_802_3.c | 2 +- extensions/ebt_among.c | 2 +- extensions/ebt_arp.c | 2 +- extensions/ebt_arpreply.c | 2 +- extensions/ebt_ip.c | 2 +- extensions/ebt_ip6.c | 2 +- extensions/ebt_limit.c | 2 +- extensions/ebt_log.c | 2 +- extensions/ebt_mark.c | 2 +- extensions/ebt_mark_m.c | 2 +- extensions/ebt_nat.c | 2 +- extensions/ebt_nflog.c | 2 +- extensions/ebt_pkttype.c | 2 +- extensions/ebt_redirect.c | 2 +- extensions/ebt_stp.c | 2 +- extensions/ebt_ulog.c | 2 +- extensions/ebt_vlan.c | 2 +- include/ebtables_u.h | 2 +- include/linux/netfilter_bridge/ebt_802_3.h | 2 +- include/linux/netfilter_bridge/ebt_among.h | 2 +- include/linux/netfilter_bridge/ebt_arp.h | 2 +- include/linux/netfilter_bridge/ebt_ip.h | 2 +- include/linux/netfilter_bridge/ebt_ip6.h | 2 +- include/linux/netfilter_bridge/ebt_limit.h | 2 +- include/linux/netfilter_bridge/ebt_log.h | 2 +- include/linux/netfilter_bridge/ebt_mark_m.h | 2 +- include/linux/netfilter_bridge/ebt_nflog.h | 2 +- include/linux/netfilter_bridge/ebt_pkttype.h | 2 +- include/linux/netfilter_bridge/ebt_stp.h | 2 +- include/linux/netfilter_bridge/ebt_ulog.h | 2 +- include/linux/netfilter_bridge/ebt_vlan.h | 2 +- include/linux/netfilter_bridge/ebtables.h | 4 +-- 37 files changed, 57 insertions(+), 66 deletions(-)