diff --git a/configure b/configure index dc14e54..f28e4cf 100755 --- a/configure +++ b/configure @@ -25,3 +25,22 @@ else echo no fi rm -f /tmp/atmtest.c /tmp/atmtest + +echo -n "HDLC IOCTL: " +cat >/tmp/hdlctest.c < +#include +int main(int argc, char **argv) { + return 0; +} +EOF +gcc -I$INCLUDE -o /tmp/hdlctest /tmp/hdlctest.c >/dev/null 2>&1 +if [ $? -eq 0 ] +then + echo "IPROUTE_CONFIG_HDLC:=y" >>Config + echo yes +else + echo no +fi +rm -f /tmp/hdlctest.c /tmp/hdlctest + diff --git a/include/linux/if.h b/include/linux/if.h index 40eb61f..9651cc9 100644 --- a/include/linux/if.h +++ b/include/linux/if.h @@ -23,7 +23,10 @@ #include /* for "struct sockaddr" et al */ #define IFNAMSIZ 16 + +#ifdef HAVE_HDLC_IOCTL #include +#endif /* Standard interface flags (netdevice->flags). */ #define IFF_UP 0x1 /* interface is up */ @@ -133,6 +136,7 @@ struct if_settings { unsigned int type; /* Type of physical device or protocol */ unsigned int size; /* Size of the data allocated by the caller */ +#ifdef HAVE_HDLC_IOCTL union { /* {atm/eth/dsl}_settings anyone ? */ raw_hdlc_proto *raw_hdlc; @@ -145,6 +149,7 @@ struct if_settings sync_serial_settings *sync; te1_settings *te1; } ifs_ifsu; +#endif }; /* diff --git a/include/linux/if_tunnel.h b/include/linux/if_tunnel.h index 228eb4e..0eb5b04 100644 --- a/include/linux/if_tunnel.h +++ b/include/linux/if_tunnel.h @@ -2,6 +2,7 @@ #define _IF_TUNNEL_H_ #include +#include #define SIOCGETTUNNEL (SIOCDEVPRIVATE + 0) #define SIOCADDTUNNEL (SIOCDEVPRIVATE + 1) diff --git a/lib/Makefile b/lib/Makefile index bc270bf..1c51a42 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -1,3 +1,9 @@ +include ../Config + +ifeq ($(IPROUTE_CONFIG_HDLC),y) + CFLAGS += -DHAVE_HDLC_IOCTL +endif + UTILOBJ=utils.o rt_names.o ll_types.o ll_proto.o ll_addr.o inet_proto.o