Patch to latest iproute to get it to compile on FC5
Subsystems (3)
I notice that the latest snapshot and git repository for iproute will not compile on FC5 due to not finding __constant_hton* symbols and a lack of the hdlc/ioctl.h file on FC5.
I am attaching a patch that appears to fix the problems for me.
Please consider applying this or something similar.
Thanks,
Ben
Signature · 2 lines
Ben Greear <[email protected]> Candela Technologies Inc http://www.candelatech.com
configure +19 -0
@@ -25,3 +25,22 @@ else echo no fi rm -f /tmp/atmtest.c /tmp/atmtest + +echo -n "HDLC IOCTL: " +cat >/tmp/hdlctest.c <<EOF +#include <net/if.h> +#include <linux/hdlc/ioctl.h> +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 +
include/linux/if.h +5 -0
@@ -23,7 +23,10 @@#include <linux/socket.h> /* for "struct sockaddr" et al */ #define IFNAMSIZ 16 + +#ifdef HAVE_HDLC_IOCTL #include <linux/hdlc/ioctl.h> +#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_settingssync_serial_settings *sync; te1_settings *te1; } ifs_ifsu; +#endif };/*
include/linux/if_tunnel.h +1 -0
@@ -2,6 +2,7 @@#define _IF_TUNNEL_H_#include <linux/types.h> +#include <asm/byteorder.h> #define SIOCGETTUNNEL (SIOCDEVPRIVATE + 0)#define SIOCADDTUNNEL (SIOCDEVPRIVATE + 1)
lib/Makefile +6 -0
@@ -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
Quoted 6 lines · On Wed, 13 Feb 2008 11:32:32 -0800 Ben Greear <[email protected]> wrote:
I notice that the latest snapshot and git repository for iproute will not compile on FC5 due to not finding __constant_hton* symbols and a lack of the
hdlc/ioctl.hfile on FC5.I am attaching a patch that appears to fix the problems for me.
Quoted 8 lines
Please consider applying this or something similar.
Signed-off-by Ben Greear <[email protected]>Thanks,
Ben
No. please don't change the configure script.
And the linux/if.h comes from kernel stripped headers so it should not get crufted up by ifdef's.
Short term fix is to include stripped hdlc header if needed. Long fix is to get rid of hdlc dependency if possible.
Signature · 1 line
Stephen Hemminger <[email protected]>
Quoted 6 lines · On Wed, 13 Feb 2008 11:32:32 -0800 Ben Greear <[email protected]> wrote:
I notice that the latest snapshot and git repository for iproute will not compile on FC5 due to not finding __constant_hton* symbols and a lack of the
hdlc/ioctl.hfile on FC5.I am attaching a patch that appears to fix the problems for me.
Quoted 8 lines
Please consider applying this or something similar.
Signed-off-by Ben Greear <[email protected]>Thanks,
Ben
I added include/linux/hdlc/ioctl.h to the santized headers in the current git.
Signature · 1 line
Stephen Hemminger <[email protected]>
Quoted 14 lines · Stephen Hemminger
Quoted 11 lines · On Wed, 13 Feb 2008 11:32:32 -0800 Ben Greear <[email protected]> wrote:
I notice that the latest snapshot and git repository for iproute will not compile on FC5 due to not finding __constant_hton* symbols and a lack of the
hdlc/ioctl.hfile on FC5.I am attaching a patch that appears to fix the problems for me.
Please consider applying this or something similar.
Signed-off-by Ben Greear <[email protected]>
Quoted 7 lines
Quoted 3 lines
Thanks,
BenI added
include/linux/hdlc/ioctl.hto the santized headers in the current git.
That seems to fix the hdlc issue, but it still will not link due to missing symbols:
gcc -Wl,-export-dynamic ip.o ipaddress.o ipaddrlabel.o iproute.o iprule.o rtm_map.o iptunnel.o ip6tunnel.o tunnel.o ipneigh.o ipntable.o iplink.o ipmaddr.o ipmonitor.o ipmroute.o ipprefix.o ipxfrm.o xfrm_state.o xfrm_policy.o xfrm_monitor.o iplink_vlan.o link_veth.o ../lib/libnetlink.a ../lib/libutil.a -lresolv -L../lib -lnetlink -lutil -ldl -o ip iptunnel.o: In function `parse_args':
iptunnel.c:(.text+0x2c6): undefined reference to `__constant_htons'
iptunnel.c:(.text+0x404): undefined reference to `__constant_htons'
iptunnel.c:(.text+0x48d): undefined reference to `__constant_htons'
iptunnel.c:(.text+0x4a6): undefined reference to `__constant_htons'
iptunnel.c:(.text+0x4e2): undefined reference to `__constant_htons'
iptunnel.o:iptunnel.c:(.text+0x4fb): more undefined references to `__constant_htons' follow
collect2: ld returned 1 exit status
make[1]: *** [ip] Error 1
make[1]: Leaving directory `/root/iproute2/ip'
make: *** [all] Error 2
The attached patch fixes this.
Thanks,
Ben
Signature · 2 lines
Ben Greear <[email protected]> Candela Technologies Inc http://www.candelatech.com
include/linux/if_tunnel.h +1 -0
@@ -2,6 +2,7 @@#define _IF_TUNNEL_H_#include <linux/types.h> +#include <asm/byteorder.h> #define SIOCGETTUNNEL (SIOCDEVPRIVATE + 0)#define SIOCADDTUNNEL (SIOCDEVPRIVATE + 1)
Here's another try at the patch to make the __constant_htonl methods be included, but without changing any of the .h files. I tested this on an FC2 system, and it compiles fine.
Interesting to me, it seems you are not supposed to #include <asm/byteorder.h> directly, but when I tried the suggested <endian.h>, it didn't actually fix the problem.
Signature · 1 line
Ben Greear <[email protected]> Candela Technologies Inc http://www.candelatech.com
ip/iptunnel.c +1 -0
@@ -34,6 +34,7 @@#include "ip_common.h" #include "tunnel.h" +#include <asm/byteorder.h> static void usage (void ) __attribute__((noreturn));static void usage (void )