netfilter: synproxy: fix building syncookie calls
authorArnd Bergmann <arnd@arndb.de>
Wed, 19 Jun 2019 12:54:36 +0000 (14:54 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Thu, 20 Jun 2019 09:59:36 +0000 (11:59 +0200)
When either CONFIG_IPV6 or CONFIG_SYN_COOKIES are disabled, the kernel
fails to build:

include/linux/netfilter_ipv6.h:180:9: error: implicit declaration of function '__cookie_v6_init_sequence'
      [-Werror,-Wimplicit-function-declaration]
        return __cookie_v6_init_sequence(iph, th, mssp);
include/linux/netfilter_ipv6.h:194:9: error: implicit declaration of function '__cookie_v6_check'
      [-Werror,-Wimplicit-function-declaration]
        return __cookie_v6_check(iph, th, cookie);
net/ipv6/netfilter.c:237:26: error: use of undeclared identifier '__cookie_v6_init_sequence'; did you mean 'cookie_init_sequence'?
net/ipv6/netfilter.c:238:21: error: use of undeclared identifier '__cookie_v6_check'; did you mean '__cookie_v4_check'?

Fix the IS_ENABLED() checks to match the function declaration
and definitions for these.

Fixes: 3006a5224f15 ("netfilter: synproxy: remove module dependency on IPv6 SYNPROXY")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
include/linux/netfilter_ipv6.h
net/ipv6/netfilter.c

index 35b12525ee4507fb39b8f1a736898920998f0793..22e6398bc48235b63715c8205824e4ce46e7ac10 100644 (file)
@@ -163,31 +163,33 @@ static inline u32 nf_ipv6_cookie_init_sequence(const struct ipv6hdr *iph,
                                               const struct tcphdr *th,
                                               u16 *mssp)
 {
+#if IS_ENABLED(CONFIG_SYN_COOKIES)
 #if IS_MODULE(CONFIG_IPV6)
        const struct nf_ipv6_ops *v6_ops = nf_get_ipv6_ops();
 
        if (v6_ops)
                return v6_ops->cookie_init_sequence(iph, th, mssp);
-
-       return 0;
-#else
+#elif IS_BUILTIN(CONFIG_IPV6)
        return __cookie_v6_init_sequence(iph, th, mssp);
 #endif
+#endif
+       return 0;
 }
 
 static inline int nf_cookie_v6_check(const struct ipv6hdr *iph,
                                     const struct tcphdr *th, __u32 cookie)
 {
+#if IS_ENABLED(CONFIG_SYN_COOKIES)
 #if IS_MODULE(CONFIG_IPV6)
        const struct nf_ipv6_ops *v6_ops = nf_get_ipv6_ops();
 
        if (v6_ops)
                return v6_ops->cookie_v6_check(iph, th, cookie);
-
-       return 0;
-#else
+#elif IS_BUILTIN(CONFIG_IPV6)
        return __cookie_v6_check(iph, th, cookie);
 #endif
+#endif
+       return 0;
 }
 
 __sum16 nf_ip6_checksum(struct sk_buff *skb, unsigned int hook,
index dffb10fdc3e8add59fcf63f9678d9c11be54eb2a..61819ed858b10ffee0169ba889905a8a45887732 100644 (file)
@@ -234,8 +234,10 @@ static const struct nf_ipv6_ops ipv6ops = {
        .route_me_harder        = ip6_route_me_harder,
        .dev_get_saddr          = ipv6_dev_get_saddr,
        .route                  = __nf_ip6_route,
+#if IS_ENABLED(CONFIG_SYN_COOKIES)
        .cookie_init_sequence   = __cookie_v6_init_sequence,
        .cookie_v6_check        = __cookie_v6_check,
+#endif
 #endif
        .route_input            = ip6_route_input,
        .fragment               = ip6_fragment,