ipv6: Move ipv6 stubs to a separate header file
authorDavid Ahern <dsahern@gmail.com>
Fri, 22 Mar 2019 13:06:09 +0000 (06:06 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 29 Mar 2019 17:53:45 +0000 (10:53 -0700)
The number of stubs is growing and has nothing to do with addrconf.
Move the definition of the stubs to a separate header file and update
users. In the move, drop the vxlan specific comment before ipv6_stub.

Code move only; no functional change intended.

Signed-off-by: David Ahern <dsahern@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 files changed:
drivers/infiniband/core/addr.c
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
drivers/net/geneve.c
drivers/net/usb/cdc_mbim.c
drivers/net/vxlan.c
include/net/addrconf.h
include/net/ipv6_stubs.h [new file with mode: 0644]
include/net/udp_tunnel.h
net/bridge/br_arp_nd_proxy.c
net/core/filter.c
net/core/lwt_bpf.c
net/ipv6/addrconf_core.c
net/ipv6/af_inet6.c
net/mpls/af_mpls.c
net/tipc/udp_media.c

index 0dce94e3c495619e1d825e9f0ee300da8ea2e779..2649e0f2ff65993e1401b0c2d29e7d3303687ffd 100644 (file)
@@ -42,7 +42,7 @@
 #include <net/neighbour.h>
 #include <net/route.h>
 #include <net/netevent.h>
-#include <net/addrconf.h>
+#include <net/ipv6_stubs.h>
 #include <net/ip6_route.h>
 #include <rdma/ib_addr.h>
 #include <rdma/ib_sa.h>
index c68edcc84af8c5538498e3bb01ac81a50366311f..2fd425a7b156fe44a353cbb8ae81ee1a859e43e0 100644 (file)
@@ -44,6 +44,7 @@
 #include <net/tc_act/tc_pedit.h>
 #include <net/tc_act/tc_csum.h>
 #include <net/arp.h>
+#include <net/ipv6_stubs.h>
 #include "en.h"
 #include "en_rep.h"
 #include "en_tc.h"
index c05b1207358d7f29d867340c728e6d392a864b92..98d1a45c06067d7aeaae5a31465a3cb036c7e080 100644 (file)
@@ -14,6 +14,7 @@
 #include <linux/module.h>
 #include <linux/etherdevice.h>
 #include <linux/hash.h>
+#include <net/ipv6_stubs.h>
 #include <net/dst_metadata.h>
 #include <net/gro_cells.h>
 #include <net/rtnetlink.h>
index 0362acd5cdcaaf2debe7ab13941a06d1504ad21c..28321aca48fe230dd3ab05df2859ac94e8880f5d 100644 (file)
@@ -23,6 +23,7 @@
 #include <linux/usb/cdc_ncm.h>
 #include <net/ipv6.h>
 #include <net/addrconf.h>
+#include <net/ipv6_stubs.h>
 
 /* alternative VLAN for IP session 0 if not untagged */
 #define MBIM_IPS0_VID  4094
index d76dfed8d9bbef1d1ae8470686e417af2e531ac8..5994d5415a03324944472a9a875e3c1471bf5641 100644 (file)
@@ -20,6 +20,7 @@
 #include <linux/ethtool.h>
 #include <net/arp.h>
 #include <net/ndisc.h>
+#include <net/ipv6_stubs.h>
 #include <net/ip.h>
 #include <net/icmp.h>
 #include <net/rtnetlink.h>
index ec8e6784a6f78fd9d35d1c43a7620b0f4589cb6f..2f67ae854ff01e24bc57221c400613d096916d3b 100644 (file)
@@ -238,53 +238,6 @@ bool ipv6_chk_mcast_addr(struct net_device *dev, const struct in6_addr *group,
 
 void ipv6_mc_dad_complete(struct inet6_dev *idev);
 
-/* A stub used by vxlan module. This is ugly, ideally these
- * symbols should be built into the core kernel.
- */
-struct ipv6_stub {
-       int (*ipv6_sock_mc_join)(struct sock *sk, int ifindex,
-                                const struct in6_addr *addr);
-       int (*ipv6_sock_mc_drop)(struct sock *sk, int ifindex,
-                                const struct in6_addr *addr);
-       int (*ipv6_dst_lookup)(struct net *net, struct sock *sk,
-                              struct dst_entry **dst, struct flowi6 *fl6);
-       int (*ipv6_route_input)(struct sk_buff *skb);
-
-       struct fib6_table *(*fib6_get_table)(struct net *net, u32 id);
-       struct fib6_info *(*fib6_lookup)(struct net *net, int oif,
-                                        struct flowi6 *fl6, int flags);
-       struct fib6_info *(*fib6_table_lookup)(struct net *net,
-                                             struct fib6_table *table,
-                                             int oif, struct flowi6 *fl6,
-                                             int flags);
-       struct fib6_info *(*fib6_multipath_select)(const struct net *net,
-                                                  struct fib6_info *f6i,
-                                                  struct flowi6 *fl6, int oif,
-                                                  const struct sk_buff *skb,
-                                                  int strict);
-       u32 (*ip6_mtu_from_fib6)(struct fib6_info *f6i, struct in6_addr *daddr,
-                                struct in6_addr *saddr);
-
-       void (*udpv6_encap_enable)(void);
-       void (*ndisc_send_na)(struct net_device *dev, const struct in6_addr *daddr,
-                             const struct in6_addr *solicited_addr,
-                             bool router, bool solicited, bool override, bool inc_opt);
-       struct neigh_table *nd_tbl;
-};
-extern const struct ipv6_stub *ipv6_stub __read_mostly;
-
-/* A stub used by bpf helpers. Similarly ugly as ipv6_stub */
-struct ipv6_bpf_stub {
-       int (*inet6_bind)(struct sock *sk, struct sockaddr *uaddr, int addr_len,
-                         bool force_bind_address_no_port, bool with_lock);
-       struct sock *(*udp6_lib_lookup)(struct net *net,
-                                       const struct in6_addr *saddr, __be16 sport,
-                                       const struct in6_addr *daddr, __be16 dport,
-                                       int dif, int sdif, struct udp_table *tbl,
-                                       struct sk_buff *skb);
-};
-extern const struct ipv6_bpf_stub *ipv6_bpf_stub __read_mostly;
-
 /*
  * identify MLD packets for MLD filter exceptions
  */
diff --git a/include/net/ipv6_stubs.h b/include/net/ipv6_stubs.h
new file mode 100644 (file)
index 0000000..d8d9c0b
--- /dev/null
@@ -0,0 +1,63 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _IPV6_STUBS_H
+#define _IPV6_STUBS_H
+
+#include <linux/in6.h>
+#include <linux/netdevice.h>
+#include <linux/skbuff.h>
+#include <net/dst.h>
+#include <net/flow.h>
+#include <net/neighbour.h>
+#include <net/sock.h>
+
+/* structs from net/ip6_fib.h */
+struct fib6_info;
+
+/* This is ugly, ideally these symbols should be built
+ * into the core kernel.
+ */
+struct ipv6_stub {
+       int (*ipv6_sock_mc_join)(struct sock *sk, int ifindex,
+                                const struct in6_addr *addr);
+       int (*ipv6_sock_mc_drop)(struct sock *sk, int ifindex,
+                                const struct in6_addr *addr);
+       int (*ipv6_dst_lookup)(struct net *net, struct sock *sk,
+                              struct dst_entry **dst, struct flowi6 *fl6);
+       int (*ipv6_route_input)(struct sk_buff *skb);
+
+       struct fib6_table *(*fib6_get_table)(struct net *net, u32 id);
+       struct fib6_info *(*fib6_lookup)(struct net *net, int oif,
+                                        struct flowi6 *fl6, int flags);
+       struct fib6_info *(*fib6_table_lookup)(struct net *net,
+                                             struct fib6_table *table,
+                                             int oif, struct flowi6 *fl6,
+                                             int flags);
+       struct fib6_info *(*fib6_multipath_select)(const struct net *net,
+                                                  struct fib6_info *f6i,
+                                                  struct flowi6 *fl6, int oif,
+                                                  const struct sk_buff *skb,
+                                                  int strict);
+       u32 (*ip6_mtu_from_fib6)(struct fib6_info *f6i, struct in6_addr *daddr,
+                                struct in6_addr *saddr);
+
+       void (*udpv6_encap_enable)(void);
+       void (*ndisc_send_na)(struct net_device *dev, const struct in6_addr *daddr,
+                             const struct in6_addr *solicited_addr,
+                             bool router, bool solicited, bool override, bool inc_opt);
+       struct neigh_table *nd_tbl;
+};
+extern const struct ipv6_stub *ipv6_stub __read_mostly;
+
+/* A stub used by bpf helpers. Similarly ugly as ipv6_stub */
+struct ipv6_bpf_stub {
+       int (*inet6_bind)(struct sock *sk, struct sockaddr *uaddr, int addr_len,
+                         bool force_bind_address_no_port, bool with_lock);
+       struct sock *(*udp6_lib_lookup)(struct net *net,
+                                    const struct in6_addr *saddr, __be16 sport,
+                                    const struct in6_addr *daddr, __be16 dport,
+                                    int dif, int sdif, struct udp_table *tbl,
+                                    struct sk_buff *skb);
+};
+extern const struct ipv6_bpf_stub *ipv6_bpf_stub __read_mostly;
+
+#endif
index b8137953fea31a377b3f5cc4aae99db932ad1ed4..4b1f95e083070ae6b4ff81eb1b5fd2433a93e282 100644 (file)
@@ -7,7 +7,7 @@
 
 #if IS_ENABLED(CONFIG_IPV6)
 #include <net/ipv6.h>
-#include <net/addrconf.h>
+#include <net/ipv6_stubs.h>
 #endif
 
 struct udp_port_cfg {
index 6b78e63517193af21d65efc750c6ca83bc92d9e1..724b474ade54ce1c18c7c5c0d66db50e4509f934 100644 (file)
@@ -21,6 +21,7 @@
 #include <linux/if_vlan.h>
 #include <linux/inetdevice.h>
 #include <net/addrconf.h>
+#include <net/ipv6_stubs.h>
 #if IS_ENABLED(CONFIG_IPV6)
 #include <net/ip6_checksum.h>
 #endif
index 887ab073a0eaed249fc3385b7f5c43cffd3cfe44..4a8455757507c49965c234bd4b00e1bfe7f00beb 100644 (file)
@@ -74,6 +74,7 @@
 #include <net/seg6.h>
 #include <net/seg6_local.h>
 #include <net/lwtunnel.h>
+#include <net/ipv6_stubs.h>
 
 /**
  *     sk_filter_trim_cap - run a packet through a socket filter
index 126d31ff5ee343e3248e1bdc9ba238f46a2a69c4..3c5c24a5d9f5c7d78e67f88f107318ad7414d269 100644 (file)
@@ -18,6 +18,7 @@
 #include <net/lwtunnel.h>
 #include <net/gre.h>
 #include <net/ip6_route.h>
+#include <net/ipv6_stubs.h>
 
 struct bpf_lwt_prog {
        struct bpf_prog *prog;
index 6c79af056d9b7b7a4595d8a8764839d2204e9ac5..945b66e3008fb42433cf30fad477fa04a095a94c 100644 (file)
@@ -5,7 +5,7 @@
 
 #include <linux/export.h>
 #include <net/ipv6.h>
-#include <net/addrconf.h>
+#include <net/ipv6_stubs.h>
 #include <net/ip.h>
 
 /* if ipv6 module registers this function is used by xfrm to force all
index fa6b404cbd104f5170e0b7002769491402d10b13..1789bf99c4196e264f0885c018ff5653b302a5a3 100644 (file)
@@ -56,6 +56,7 @@
 #include <net/transp_v6.h>
 #include <net/ip6_route.h>
 #include <net/addrconf.h>
+#include <net/ipv6_stubs.h>
 #include <net/ndisc.h>
 #ifdef CONFIG_IPV6_TUNNEL
 #include <net/ip6_tunnel.h>
index f7c544592ec872e9ead8db7e941f5e46861c3baf..8120e04f15e44f5df586de9e959c6d0cec39af63 100644 (file)
@@ -22,7 +22,7 @@
 #if IS_ENABLED(CONFIG_IPV6)
 #include <net/ipv6.h>
 #endif
-#include <net/addrconf.h>
+#include <net/ipv6_stubs.h>
 #include <net/nexthop.h>
 #include "internal.h"
 
index 4d85d71f16e2abcee0f2abd84020f9b471f3e8fa..6f166fbbfff148b7d3774ece0d68203d9925b3da 100644 (file)
@@ -44,7 +44,7 @@
 #include <net/sock.h>
 #include <net/ip.h>
 #include <net/udp_tunnel.h>
-#include <net/addrconf.h>
+#include <net/ipv6_stubs.h>
 #include <linux/tipc_netlink.h>
 #include "core.h"
 #include "addr.h"