All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] ipv6: hide ip6_encap_hlen/ip6_tnl_encap definitions
@ 2016-05-25 14:50 Arnd Bergmann
  2016-05-25 14:50 ` [PATCH 2/2] fou: add Kconfig options for IPv6 support Arnd Bergmann
  2016-05-30  5:24 ` [PATCH 1/2] ipv6: hide ip6_encap_hlen/ip6_tnl_encap definitions David Miller
  0 siblings, 2 replies; 4+ messages in thread
From: Arnd Bergmann @ 2016-05-25 14:50 UTC (permalink / raw)
  To: Tom Herbert, David S. Miller
  Cc: Arnd Bergmann, Alexey Kuznetsov, James Morris, Hideaki YOSHIFUJI,
	Patrick McHardy, netdev, linux-kernel

A recent cleanup moved MAX_IPTUN_ENCAP_OPS along with some other
definitions, but it is now invisible when CONFIG_INET is
not defined, but still referenced from ip6_tunnel.h:

In file included from net/xfrm/xfrm_input.c:17:0:
include/net/ip6_tunnel.h:67:17: error: 'MAX_IPTUN_ENCAP_OPS' undeclared here (not in a function)
   ip6tun_encaps[MAX_IPTUN_ENCAP_OPS];
                 ^~~~~~~~~~~~~~~~~~~

This hides the ip6_encap_hlen and ip6_tnl_encap functions inside
of CONFIG_INET so we don't run into the the problem.

Alternatively we could move the macro out of the #ifdef again to
restore the previous behavior

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Fixes: 55c2bc143224 ("net: Cleanup encap items in ip_tunnels.h")
---
 include/net/ip6_tunnel.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/include/net/ip6_tunnel.h b/include/net/ip6_tunnel.h
index d325c81332e3..43a5a0e4524c 100644
--- a/include/net/ip6_tunnel.h
+++ b/include/net/ip6_tunnel.h
@@ -63,6 +63,8 @@ struct ip6_tnl_encap_ops {
 			    u8 *protocol, struct flowi6 *fl6);
 };
 
+#ifdef CONFIG_INET
+
 extern const struct ip6_tnl_encap_ops __rcu *
 		ip6tun_encaps[MAX_IPTUN_ENCAP_OPS];
 
@@ -138,7 +140,6 @@ struct net *ip6_tnl_get_link_net(const struct net_device *dev);
 int ip6_tnl_get_iflink(const struct net_device *dev);
 int ip6_tnl_change_mtu(struct net_device *dev, int new_mtu);
 
-#ifdef CONFIG_INET
 static inline void ip6tunnel_xmit(struct sock *sk, struct sk_buff *skb,
 				  struct net_device *dev)
 {
-- 
2.7.0

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/2] fou: add Kconfig options for IPv6 support
  2016-05-25 14:50 [PATCH 1/2] ipv6: hide ip6_encap_hlen/ip6_tnl_encap definitions Arnd Bergmann
@ 2016-05-25 14:50 ` Arnd Bergmann
  2016-05-30  5:24   ` David Miller
  2016-05-30  5:24 ` [PATCH 1/2] ipv6: hide ip6_encap_hlen/ip6_tnl_encap definitions David Miller
  1 sibling, 1 reply; 4+ messages in thread
From: Arnd Bergmann @ 2016-05-25 14:50 UTC (permalink / raw)
  To: Tom Herbert, David S. Miller
  Cc: Arnd Bergmann, Alexey Kuznetsov, James Morris, Hideaki YOSHIFUJI,
	Patrick McHardy, netdev, linux-kernel

A previous patch added the fou6.ko module, but that failed to link
in a couple of configurations:

net/built-in.o: In function `ip6_tnl_encap_add_fou_ops':
net/ipv6/fou6.c:88: undefined reference to `ip6_tnl_encap_add_ops'
net/ipv6/fou6.c:94: undefined reference to `ip6_tnl_encap_add_ops'
net/ipv6/fou6.c:97: undefined reference to `ip6_tnl_encap_del_ops'
net/built-in.o: In function `ip6_tnl_encap_del_fou_ops':
net/ipv6/fou6.c:106: undefined reference to `ip6_tnl_encap_del_ops'
net/ipv6/fou6.c:107: undefined reference to `ip6_tnl_encap_del_ops'

If CONFIG_IPV6=m, ip6_tnl_encap_add_ops/ip6_tnl_encap_del_ops
are in a module, but fou6.c can still be built-in, and that
obviously fails to link.

Also, if CONFIG_IPV6=y, but CONFIG_IPV6_TUNNEL=m or
CONFIG_IPV6_TUNNEL=n, the same problem happens for a different
reason.

This adds two new silent Kconfig symbols to work around both
problems:

- CONFIG_IPV6_FOU is now always set to 'm' if either CONFIG_NET_FOU=m
  or CONFIG_IPV6=m
- CONFIG_IPV6_FOU_TUNNEL is set implicitly when IPV6_FOU is enabled
  and NET_FOU_IP_TUNNELS is also turned out, and it will ensure
  that CONFIG_IPV6_TUNNEL is also available.

The options could be made user-visible as well, to give additional
room for configuration, but it seems easier not to bother users
with more choice here.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Fixes: aa3463d65e7b ("fou: Add encap ops for IPv6 tunnels")
---
 net/ipv6/Kconfig  | 9 +++++++++
 net/ipv6/Makefile | 2 +-
 net/ipv6/fou6.c   | 2 +-
 3 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/net/ipv6/Kconfig b/net/ipv6/Kconfig
index 3f8411328de5..994608263260 100644
--- a/net/ipv6/Kconfig
+++ b/net/ipv6/Kconfig
@@ -232,6 +232,15 @@ config IPV6_GRE
 
 	  Saying M here will produce a module called ip6_gre. If unsure, say N.
 
+config IPV6_FOU
+	tristate
+	default NET_FOU && IPV6
+
+config IPV6_FOU_TUNNEL
+	tristate
+	default NET_FOU_IP_TUNNELS && IPV6_FOU
+	select INET6_TUNNEL
+
 config IPV6_MULTIPLE_TABLES
 	bool "IPv6: Multiple Routing Tables"
 	select FIB_RULES
diff --git a/net/ipv6/Makefile b/net/ipv6/Makefile
index 7ec3129c9ace..d42ca3d1197f 100644
--- a/net/ipv6/Makefile
+++ b/net/ipv6/Makefile
@@ -42,7 +42,7 @@ obj-$(CONFIG_IPV6_VTI) += ip6_vti.o
 obj-$(CONFIG_IPV6_SIT) += sit.o
 obj-$(CONFIG_IPV6_TUNNEL) += ip6_tunnel.o
 obj-$(CONFIG_IPV6_GRE) += ip6_gre.o
-obj-$(CONFIG_NET_FOU) += fou6.o
+obj-$(CONFIG_NET_FOU_IPV6_TUNNELS) += fou6.o
 
 obj-y += addrconf_core.o exthdrs_core.o ip6_checksum.o ip6_icmp.o
 obj-$(CONFIG_INET) += output_core.o protocol.o $(ipv6-offload)
diff --git a/net/ipv6/fou6.c b/net/ipv6/fou6.c
index c972d0b52579..9ea249b9451e 100644
--- a/net/ipv6/fou6.c
+++ b/net/ipv6/fou6.c
@@ -69,7 +69,7 @@ int gue6_build_header(struct sk_buff *skb, struct ip_tunnel_encap *e,
 }
 EXPORT_SYMBOL(gue6_build_header);
 
-#ifdef CONFIG_NET_FOU_IP_TUNNELS
+#if IS_ENABLED(CONFIG_IPV6_FOU_TUNNEL)
 
 static const struct ip6_tnl_encap_ops fou_ip6tun_ops = {
 	.encap_hlen = fou_encap_hlen,
-- 
2.7.0

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 1/2] ipv6: hide ip6_encap_hlen/ip6_tnl_encap definitions
  2016-05-25 14:50 [PATCH 1/2] ipv6: hide ip6_encap_hlen/ip6_tnl_encap definitions Arnd Bergmann
  2016-05-25 14:50 ` [PATCH 2/2] fou: add Kconfig options for IPv6 support Arnd Bergmann
@ 2016-05-30  5:24 ` David Miller
  1 sibling, 0 replies; 4+ messages in thread
From: David Miller @ 2016-05-30  5:24 UTC (permalink / raw)
  To: arnd; +Cc: tom, kuznet, jmorris, yoshfuji, kaber, netdev, linux-kernel

From: Arnd Bergmann <arnd@arndb.de>
Date: Wed, 25 May 2016 16:50:45 +0200

> A recent cleanup moved MAX_IPTUN_ENCAP_OPS along with some other
> definitions, but it is now invisible when CONFIG_INET is
> not defined, but still referenced from ip6_tunnel.h:
> 
> In file included from net/xfrm/xfrm_input.c:17:0:
> include/net/ip6_tunnel.h:67:17: error: 'MAX_IPTUN_ENCAP_OPS' undeclared here (not in a function)
>    ip6tun_encaps[MAX_IPTUN_ENCAP_OPS];
>                  ^~~~~~~~~~~~~~~~~~~
> 
> This hides the ip6_encap_hlen and ip6_tnl_encap functions inside
> of CONFIG_INET so we don't run into the the problem.
> 
> Alternatively we could move the macro out of the #ifdef again to
> restore the previous behavior
> 
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> Fixes: 55c2bc143224 ("net: Cleanup encap items in ip_tunnels.h")

Applied.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 2/2] fou: add Kconfig options for IPv6 support
  2016-05-25 14:50 ` [PATCH 2/2] fou: add Kconfig options for IPv6 support Arnd Bergmann
@ 2016-05-30  5:24   ` David Miller
  0 siblings, 0 replies; 4+ messages in thread
From: David Miller @ 2016-05-30  5:24 UTC (permalink / raw)
  To: arnd; +Cc: tom, kuznet, jmorris, yoshfuji, kaber, netdev, linux-kernel

From: Arnd Bergmann <arnd@arndb.de>
Date: Wed, 25 May 2016 16:50:46 +0200

> A previous patch added the fou6.ko module, but that failed to link
> in a couple of configurations:
> 
> net/built-in.o: In function `ip6_tnl_encap_add_fou_ops':
> net/ipv6/fou6.c:88: undefined reference to `ip6_tnl_encap_add_ops'
> net/ipv6/fou6.c:94: undefined reference to `ip6_tnl_encap_add_ops'
> net/ipv6/fou6.c:97: undefined reference to `ip6_tnl_encap_del_ops'
> net/built-in.o: In function `ip6_tnl_encap_del_fou_ops':
> net/ipv6/fou6.c:106: undefined reference to `ip6_tnl_encap_del_ops'
> net/ipv6/fou6.c:107: undefined reference to `ip6_tnl_encap_del_ops'
> 
> If CONFIG_IPV6=m, ip6_tnl_encap_add_ops/ip6_tnl_encap_del_ops
> are in a module, but fou6.c can still be built-in, and that
> obviously fails to link.
> 
> Also, if CONFIG_IPV6=y, but CONFIG_IPV6_TUNNEL=m or
> CONFIG_IPV6_TUNNEL=n, the same problem happens for a different
> reason.
> 
> This adds two new silent Kconfig symbols to work around both
> problems:
> 
> - CONFIG_IPV6_FOU is now always set to 'm' if either CONFIG_NET_FOU=m
>   or CONFIG_IPV6=m
> - CONFIG_IPV6_FOU_TUNNEL is set implicitly when IPV6_FOU is enabled
>   and NET_FOU_IP_TUNNELS is also turned out, and it will ensure
>   that CONFIG_IPV6_TUNNEL is also available.
> 
> The options could be made user-visible as well, to give additional
> room for configuration, but it seems easier not to bother users
> with more choice here.
> 
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> Fixes: aa3463d65e7b ("fou: Add encap ops for IPv6 tunnels")

Applied.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-05-30  5:24 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-05-25 14:50 [PATCH 1/2] ipv6: hide ip6_encap_hlen/ip6_tnl_encap definitions Arnd Bergmann
2016-05-25 14:50 ` [PATCH 2/2] fou: add Kconfig options for IPv6 support Arnd Bergmann
2016-05-30  5:24   ` David Miller
2016-05-30  5:24 ` [PATCH 1/2] ipv6: hide ip6_encap_hlen/ip6_tnl_encap definitions David Miller

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.