When CONFIG_IPV6 is disabled, the bridge netfilter code produces a link error: ERROR: "br_ip6_fragment" [net/bridge/netfilter/nf_conntrack_bridge.ko] undefined! ERROR: "nf_ct_frag6_gather" [net/bridge/netfilter/nf_conntrack_bridge.ko] undefined! The problem is that it assumes that whenever IPV6 is not a loadable module, we can call the functions direction. This is clearly not true when IPV6 is disabled. There are two other functions defined like this in linux/netfilter_ipv6.h, so change them all the same way.
Showing the changes to include/linux (1 of 1 file). Show all
Unified · Split
| @@ -75,8 +75,10 @@ static inline int nf_ipv6_chk_addr(struct net *net, const struct in6_addr *addr, · 74 unmodified lines | |||
| 75 | return 1; | 75 | return 1; |
| 76 | 76 | ||
| 77 | return v6_ops->chk_addr(net, addr, dev, strict); | 77 | return v6_ops->chk_addr(net, addr, dev, strict); |
| 78 | #else | 78 | #elif IS_BUILTIN(CONFIG_IPV6) |
| 79 | return ipv6_chk_addr(net, addr, dev, strict); | 79 | return ipv6_chk_addr(net, addr, dev, strict); |
| 80 | #else | ||
| 81 | return 1; | ||
| 80 | #endif | 82 | #endif |
| 81 | } | 83 | } |
| 82 | 84 | ||
| @@ -113,8 +115,10 @@ static inline int nf_ipv6_br_defrag(struct net *net, struct sk_buff *skb, · 30 unmodified lines | |||
| 113 | return 1; | 115 | return 1; |
| 114 | 116 | ||
| 115 | return v6_ops->br_defrag(net, skb, user); | 117 | return v6_ops->br_defrag(net, skb, user); |
| 116 | #else | 118 | #elif IS_BUILTIN(CONFIG_IPV6) |
| 117 | return nf_ct_frag6_gather(net, skb, user); | 119 | return nf_ct_frag6_gather(net, skb, user); |
| 120 | #else | ||
| 121 | return 1; | ||
| 118 | #endif | 122 | #endif |
| 119 | } | 123 | } |
| 120 | 124 | ||
| @@ -138,8 +142,10 @@ static inline int nf_br_ip6_fragment(struct net *net, struct sock *sk, · 17 unmodified lines | |||
| 138 | return 1; | 142 | return 1; |
| 139 | 143 | ||
| 140 | return v6_ops->br_fragment(net, sk, skb, data, output); | 144 | return v6_ops->br_fragment(net, sk, skb, data, output); |
| 141 | #else | 145 | #elif IS_BUILTIN(CONFIG_IPV6) |
| 142 | return br_ip6_fragment(net, sk, skb, data, output); | 146 | return br_ip6_fragment(net, sk, skb, data, output); |
| 147 | #else | ||
| 148 | return 1; | ||
| 143 | #endif | 149 | #endif |
| 144 | } | 150 | } |
| 145 | 151 | ||
| @@ -154,8 +160,10 @@ static inline int nf_ip6_route_me_harder(struct net *net, struct sk_buff *skb) · 8 unmodified lines | |||
| 154 | return -EHOSTUNREACH; | 160 | return -EHOSTUNREACH; |
| 155 | 161 | ||
| 156 | return v6_ops->route_me_harder(net, skb); | 162 | return v6_ops->route_me_harder(net, skb); |
| 157 | #else | 163 | #elif IS_BUILTIN(CONFIG_IPV6) |
| 158 | return ip6_route_me_harder(net, skb); | 164 | return ip6_route_me_harder(net, skb); |
| 165 | #else | ||
| 166 | return -EHOSTUNREACH; | ||
| 159 | #endif | 167 | #endif |
| 160 | } | 168 | } |
| 161 | 169 | ||