From: David Woodhouse Several functions guarded by CONFIG_INET are actually IPv4-specific and should be gated by CONFIG_LEGACY_IP instead: - bpf_out_neigh_v4(): BPF IPv4 neighbour output helper - bpf_ipv4_fib_lookup(): BPF IPv4 FIB lookup - case AF_INET in bpf_xdp_fib_lookup/bpf_skb_fib_lookup switch - br_arp_send(): bridge ARP proxy (ARP is IPv4-only) This allows the compiler to eliminate these functions when LEGACY_IP=n. Signed-off-by: David Woodhouse --- net/bridge/br_arp_nd_proxy.c | 2 +- net/bridge/br_private.h | 8 ++++++++ net/core/filter.c | 10 +++++----- net/core/sock.c | 2 +- net/mac80211/main.c | 10 +++++----- net/netfilter/nfnetlink_queue.c | 2 +- 6 files changed, 21 insertions(+), 13 deletions(-) diff --git a/net/bridge/br_arp_nd_proxy.c b/net/bridge/br_arp_nd_proxy.c index 1e2b51769eec..e056fa0cd1fe 100644 --- a/net/bridge/br_arp_nd_proxy.c +++ b/net/bridge/br_arp_nd_proxy.c @@ -39,7 +39,7 @@ void br_recalculate_neigh_suppress_enabled(struct net_bridge *br) br_opt_toggle(br, BROPT_NEIGH_SUPPRESS_ENABLED, neigh_suppress); } -#if IS_ENABLED(CONFIG_INET) +#if IS_ENABLED(CONFIG_LEGACY_IP) static void br_arp_send(struct net_bridge *br, struct net_bridge_port *p, struct net_device *dev, __be32 dest_ip, __be32 src_ip, const unsigned char *dest_hw, diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h index 9b55d38ea9ed..28131fa0a7c5 100644 --- a/net/bridge/br_private.h +++ b/net/bridge/br_private.h @@ -2347,8 +2347,16 @@ static inline void br_switchdev_init(struct net_bridge *br) /* br_arp_nd_proxy.c */ void br_recalculate_neigh_suppress_enabled(struct net_bridge *br); +#if IS_ENABLED(CONFIG_LEGACY_IP) void br_do_proxy_suppress_arp(struct sk_buff *skb, struct net_bridge *br, u16 vid, struct net_bridge_port *p); +#else +static inline void br_do_proxy_suppress_arp(struct sk_buff *skb, + struct net_bridge *br, + u16 vid, struct net_bridge_port *p) +{ +} +#endif void br_do_suppress_nd(struct sk_buff *skb, struct net_bridge *br, u16 vid, struct net_bridge_port *p, struct nd_msg *msg); struct nd_msg *br_is_nd_neigh_msg(const struct sk_buff *skb, struct nd_msg *m); diff --git a/net/core/filter.c b/net/core/filter.c index ad71ceefcb5e..ef99bd9fddd6 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -2310,7 +2310,7 @@ static int __bpf_redirect_neigh_v6(struct sk_buff *skb, struct net_device *dev, } #endif /* CONFIG_IPV6 */ -#if IS_ENABLED(CONFIG_INET) +#if IS_ENABLED(CONFIG_LEGACY_IP) static int bpf_out_neigh_v4(struct net *net, struct sk_buff *skb, struct net_device *dev, struct bpf_nh_params *nh) { @@ -2419,7 +2419,7 @@ static int __bpf_redirect_neigh_v4(struct sk_buff *skb, struct net_device *dev, kfree_skb(skb); return NET_XMIT_DROP; } -#endif /* CONFIG_INET */ +#endif /* CONFIG_LEGACY_IP */ static int __bpf_redirect_neigh(struct sk_buff *skb, struct net_device *dev, struct bpf_nh_params *nh) @@ -6095,7 +6095,7 @@ static int bpf_fib_set_fwd_params(struct bpf_fib_lookup *params, u32 mtu) } #endif -#if IS_ENABLED(CONFIG_INET) +#if IS_ENABLED(CONFIG_LEGACY_IP) static int bpf_ipv4_fib_lookup(struct net *net, struct bpf_fib_lookup *params, u32 flags, bool check_mtu) { @@ -6390,7 +6390,7 @@ BPF_CALL_4(bpf_xdp_fib_lookup, struct xdp_buff *, ctx, return -EINVAL; switch (params->family) { -#if IS_ENABLED(CONFIG_INET) +#if IS_ENABLED(CONFIG_LEGACY_IP) case AF_INET: return bpf_ipv4_fib_lookup(dev_net(ctx->rxq->dev), params, flags, true); @@ -6431,7 +6431,7 @@ BPF_CALL_4(bpf_skb_fib_lookup, struct sk_buff *, skb, check_mtu = true; switch (params->family) { -#if IS_ENABLED(CONFIG_INET) +#if IS_ENABLED(CONFIG_LEGACY_IP) case AF_INET: rc = bpf_ipv4_fib_lookup(net, params, flags, check_mtu); break; diff --git a/net/core/sock.c b/net/core/sock.c index 5976100a9d55..6b2914702a38 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -4267,7 +4267,7 @@ int sock_load_diag_module(int family, int protocol) NETLINK_SOCK_DIAG, family); } -#ifdef CONFIG_INET +#ifdef CONFIG_LEGACY_IP if (family == AF_INET && protocol != IPPROTO_RAW && protocol < MAX_INET_PROTOS && diff --git a/net/mac80211/main.c b/net/mac80211/main.c index 616f86b1a7e4..7c1bbbb2c5c7 100644 --- a/net/mac80211/main.c +++ b/net/mac80211/main.c @@ -558,7 +558,7 @@ void ieee80211_restart_hw(struct ieee80211_hw *hw) } EXPORT_SYMBOL(ieee80211_restart_hw); -#ifdef CONFIG_INET +#ifdef CONFIG_LEGACY_IP static int ieee80211_ifa_changed(struct notifier_block *nb, unsigned long data, void *arg) { @@ -1624,7 +1624,7 @@ int ieee80211_register_hw(struct ieee80211_hw *hw) wiphy_unlock(hw->wiphy); rtnl_unlock(); -#ifdef CONFIG_INET +#ifdef CONFIG_LEGACY_IP local->ifa_notifier.notifier_call = ieee80211_ifa_changed; result = register_inetaddr_notifier(&local->ifa_notifier); if (result) @@ -1642,11 +1642,11 @@ int ieee80211_register_hw(struct ieee80211_hw *hw) #if IS_ENABLED(CONFIG_IPV6) fail_ifa6: -#ifdef CONFIG_INET +#ifdef CONFIG_LEGACY_IP unregister_inetaddr_notifier(&local->ifa_notifier); #endif #endif -#if defined(CONFIG_INET) || defined(CONFIG_IPV6) +#if defined(CONFIG_LEGACY_IP) || defined(CONFIG_IPV6) fail_ifa: #endif wiphy_unregister(local->hw.wiphy); @@ -1673,7 +1673,7 @@ void ieee80211_unregister_hw(struct ieee80211_hw *hw) tasklet_kill(&local->tx_pending_tasklet); tasklet_kill(&local->tasklet); -#ifdef CONFIG_INET +#ifdef CONFIG_LEGACY_IP unregister_inetaddr_notifier(&local->ifa_notifier); #endif #if IS_ENABLED(CONFIG_IPV6) diff --git a/net/netfilter/nfnetlink_queue.c b/net/netfilter/nfnetlink_queue.c index 47f7f62906e2..e453fdb2254c 100644 --- a/net/netfilter/nfnetlink_queue.c +++ b/net/netfilter/nfnetlink_queue.c @@ -339,7 +339,7 @@ static struct nf_hook_entries *nf_hook_entries_head(const struct net *net, u8 pf static int nf_ip_reroute(struct sk_buff *skb, const struct nf_queue_entry *entry) { -#ifdef CONFIG_INET +#ifdef CONFIG_LEGACY_IP const struct ip_rt_info *rt_info = nf_queue_entry_reroute(entry); if (entry->state.hook == NF_INET_LOCAL_OUT) { -- 2.51.0