Message ID | 1478780813-20005-1-git-send-email-david.lebrun@uclouvain.be |
---|---|
State | Changes Requested, archived |
Delegated to: | David Miller |
Headers | show |
From: David Lebrun <david.lebrun@uclouvain.be> Date: Thu, 10 Nov 2016 13:26:53 +0100 > v2: fix conditional compilation for seg6_iptunnel.o in Makefile > > This patch compiles SR lwtunnels support only if CONFIG_LWTUNNEL=y. > > If IPv6 is enabled and CONFIG_LWTUNNEL=n, then seg6_iptunnel_init() > fails with EOPNOTSUPP which in turn makes seg6_init() fail, blocking > the IPv6 initialization, with the following messages: > > NET: Registered protocol family 10 > IPv6: Attempt to unregister permanent protocol 6 > IPv6: Attempt to unregister permanent protocol 136 > IPv6: Attempt to unregister permanent protocol 17 > NET: Unregistered protocol family 10 > > Fix commit 6c8702c60b88 ("ipv6: sr: add support for SRH encapsulation and injection with lwtunnels") > > Tested with various combinations of CONFIG_IPV6 and CONFIG_LWTUNNEL. > > Reported-by: Lorenzo Colitti <lorenzo@google.com> > Signed-off-by: David Lebrun <david.lebrun@uclouvain.be> Applied, thanks David.
From: David Miller <davem@davemloft.net> Date: Sun, 13 Nov 2016 00:20:55 -0500 (EST) > From: David Lebrun <david.lebrun@uclouvain.be> > Date: Thu, 10 Nov 2016 13:26:53 +0100 > >> v2: fix conditional compilation for seg6_iptunnel.o in Makefile >> >> This patch compiles SR lwtunnels support only if CONFIG_LWTUNNEL=y. >> >> If IPv6 is enabled and CONFIG_LWTUNNEL=n, then seg6_iptunnel_init() >> fails with EOPNOTSUPP which in turn makes seg6_init() fail, blocking >> the IPv6 initialization, with the following messages: >> >> NET: Registered protocol family 10 >> IPv6: Attempt to unregister permanent protocol 6 >> IPv6: Attempt to unregister permanent protocol 136 >> IPv6: Attempt to unregister permanent protocol 17 >> NET: Unregistered protocol family 10 >> >> Fix commit 6c8702c60b88 ("ipv6: sr: add support for SRH encapsulation and injection with lwtunnels") >> >> Tested with various combinations of CONFIG_IPV6 and CONFIG_LWTUNNEL. >> >> Reported-by: Lorenzo Colitti <lorenzo@google.com> >> Signed-off-by: David Lebrun <david.lebrun@uclouvain.be> > > Applied, thanks David. Actually reverted, after just doing an "make oldconfig" on an "make allmodconfig" tree after applying this patch the build fails to link: [davem@localhost net-next]$ make -s -j8 DESCEND objtool net/built-in.o: In function `seg6_build_state': seg6_iptunnel.c:(.text+0x1b7fbe): undefined reference to `seg6_validate_srh' net/built-in.o: In function `seg6_do_srh': seg6_iptunnel.c:(.text+0x1b8ad2): undefined reference to `ipv6_dev_get_saddr' net/built-in.o: In function `seg6_input': (.text+0x1b8eeb): undefined reference to `ip6_route_input' net/built-in.o: In function `seg6_output': (.text+0x1b9151): undefined reference to `ip6_route_output_flags' Makefile:959: recipe for target 'vmlinux' failed make: *** [vmlinux] Error 1 This seems like such a huge mess, quite frankly. IPV6-SR has so many strange dependencies, a weird Kconfig option that is simply controlling what a responsible sysadmin should be allow to do if he chooses anyways. Every distribution is going to say "¯\_(ツ)_/¯" and just turn the thing on in their builds.
diff --git a/net/ipv6/Kconfig b/net/ipv6/Kconfig index 0f00811..030cdb6 100644 --- a/net/ipv6/Kconfig +++ b/net/ipv6/Kconfig @@ -292,6 +292,7 @@ config IPV6_PIMSM_V2 config IPV6_SEG6_INLINE bool "IPv6: direct Segment Routing Header insertion " depends on IPV6 + depends on LWTUNNEL ---help--- Support for direct insertion of the Segment Routing Header, also known as inline mode. Be aware that direct insertion of diff --git a/net/ipv6/Makefile b/net/ipv6/Makefile index 129cad2..8979d53 100644 --- a/net/ipv6/Makefile +++ b/net/ipv6/Makefile @@ -9,7 +9,7 @@ ipv6-objs := af_inet6.o anycast.o ip6_output.o ip6_input.o addrconf.o \ route.o ip6_fib.o ipv6_sockglue.o ndisc.o udp.o udplite.o \ raw.o icmp.o mcast.o reassembly.o tcp_ipv6.o ping.o \ exthdrs.o datagram.o ip6_flowlabel.o inet6_connection_sock.o \ - udp_offload.o seg6.o seg6_iptunnel.o + udp_offload.o seg6.o ipv6-offload := ip6_offload.o tcpv6_offload.o exthdrs_offload.o @@ -53,5 +53,6 @@ obj-$(subst m,y,$(CONFIG_IPV6)) += inet6_hashtables.o ifneq ($(CONFIG_IPV6),) obj-$(CONFIG_NET_UDP_TUNNEL) += ip6_udp_tunnel.o +obj-$(CONFIG_LWTUNNEL) += seg6_iptunnel.o obj-y += mcast_snoop.o endif diff --git a/net/ipv6/seg6.c b/net/ipv6/seg6.c index 50f6e06..0f74f90 100644 --- a/net/ipv6/seg6.c +++ b/net/ipv6/seg6.c @@ -451,9 +451,11 @@ int __init seg6_init(void) if (err) goto out_unregister_genl; +#ifdef CONFIG_LWTUNNEL err = seg6_iptunnel_init(); if (err) goto out_unregister_pernet; +#endif #ifdef CONFIG_IPV6_SEG6_HMAC err = seg6_hmac_init(); @@ -467,10 +469,14 @@ int __init seg6_init(void) return err; #ifdef CONFIG_IPV6_SEG6_HMAC out_unregister_iptun: +#ifdef CONFIG_LWTUNNEL seg6_iptunnel_exit(); #endif +#endif +#ifdef CONFIG_LWTUNNEL out_unregister_pernet: unregister_pernet_subsys(&ip6_segments_ops); +#endif out_unregister_genl: genl_unregister_family(&seg6_genl_family); goto out; @@ -481,7 +487,9 @@ void seg6_exit(void) #ifdef CONFIG_IPV6_SEG6_HMAC seg6_hmac_exit(); #endif +#ifdef CONFIG_LWTUNNEL seg6_iptunnel_exit(); +#endif unregister_pernet_subsys(&ip6_segments_ops); genl_unregister_family(&seg6_genl_family); }
v2: fix conditional compilation for seg6_iptunnel.o in Makefile This patch compiles SR lwtunnels support only if CONFIG_LWTUNNEL=y. If IPv6 is enabled and CONFIG_LWTUNNEL=n, then seg6_iptunnel_init() fails with EOPNOTSUPP which in turn makes seg6_init() fail, blocking the IPv6 initialization, with the following messages: NET: Registered protocol family 10 IPv6: Attempt to unregister permanent protocol 6 IPv6: Attempt to unregister permanent protocol 136 IPv6: Attempt to unregister permanent protocol 17 NET: Unregistered protocol family 10 Fix commit 6c8702c60b88 ("ipv6: sr: add support for SRH encapsulation and injection with lwtunnels") Tested with various combinations of CONFIG_IPV6 and CONFIG_LWTUNNEL. Reported-by: Lorenzo Colitti <lorenzo@google.com> Signed-off-by: David Lebrun <david.lebrun@uclouvain.be> --- net/ipv6/Kconfig | 1 + net/ipv6/Makefile | 3 ++- net/ipv6/seg6.c | 8 ++++++++ 3 files changed, 11 insertions(+), 1 deletion(-)