OSDN Git Service

netfilter: utils: move nf_ip_checksum* from ipv4 to utils
authorFlorian Westphal <fw@strlen.de>
Mon, 25 Jun 2018 15:49:43 +0000 (17:49 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Mon, 16 Jul 2018 15:51:48 +0000 (17:51 +0200)
allows to make nf_ip_checksum_partial static, it no longer
has an external caller.

Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
include/linux/netfilter_ipv4.h
net/ipv4/netfilter.c
net/netfilter/utils.c

index b31dabf..95ab5cc 100644 (file)
@@ -23,9 +23,6 @@ struct nf_queue_entry;
 #ifdef CONFIG_INET
 __sum16 nf_ip_checksum(struct sk_buff *skb, unsigned int hook,
                       unsigned int dataoff, u_int8_t protocol);
-__sum16 nf_ip_checksum_partial(struct sk_buff *skb, unsigned int hook,
-                              unsigned int dataoff, unsigned int len,
-                              u_int8_t protocol);
 int nf_ip_route(struct net *net, struct dst_entry **dst, struct flowi *fl,
                bool strict);
 int nf_ip_reroute(struct sk_buff *skb, const struct nf_queue_entry *entry);
@@ -35,14 +32,6 @@ static inline __sum16 nf_ip_checksum(struct sk_buff *skb, unsigned int hook,
 {
        return 0;
 }
-static inline __sum16 nf_ip_checksum_partial(struct sk_buff *skb,
-                                            unsigned int hook,
-                                            unsigned int dataoff,
-                                            unsigned int len,
-                                            u_int8_t protocol)
-{
-       return 0;
-}
 static inline int nf_ip_route(struct net *net, struct dst_entry **dst,
                              struct flowi *fl, bool strict)
 {
index e6774cc..8d2e5dc 100644 (file)
@@ -98,59 +98,6 @@ int nf_ip_reroute(struct sk_buff *skb, const struct nf_queue_entry *entry)
 }
 EXPORT_SYMBOL_GPL(nf_ip_reroute);
 
-__sum16 nf_ip_checksum(struct sk_buff *skb, unsigned int hook,
-                           unsigned int dataoff, u_int8_t protocol)
-{
-       const struct iphdr *iph = ip_hdr(skb);
-       __sum16 csum = 0;
-
-       switch (skb->ip_summed) {
-       case CHECKSUM_COMPLETE:
-               if (hook != NF_INET_PRE_ROUTING && hook != NF_INET_LOCAL_IN)
-                       break;
-               if ((protocol == 0 && !csum_fold(skb->csum)) ||
-                   !csum_tcpudp_magic(iph->saddr, iph->daddr,
-                                      skb->len - dataoff, protocol,
-                                      skb->csum)) {
-                       skb->ip_summed = CHECKSUM_UNNECESSARY;
-                       break;
-               }
-               /* fall through */
-       case CHECKSUM_NONE:
-               if (protocol == 0)
-                       skb->csum = 0;
-               else
-                       skb->csum = csum_tcpudp_nofold(iph->saddr, iph->daddr,
-                                                      skb->len - dataoff,
-                                                      protocol, 0);
-               csum = __skb_checksum_complete(skb);
-       }
-       return csum;
-}
-EXPORT_SYMBOL(nf_ip_checksum);
-
-__sum16 nf_ip_checksum_partial(struct sk_buff *skb, unsigned int hook,
-                              unsigned int dataoff, unsigned int len,
-                              u_int8_t protocol)
-{
-       const struct iphdr *iph = ip_hdr(skb);
-       __sum16 csum = 0;
-
-       switch (skb->ip_summed) {
-       case CHECKSUM_COMPLETE:
-               if (len == skb->len - dataoff)
-                       return nf_ip_checksum(skb, hook, dataoff, protocol);
-               /* fall through */
-       case CHECKSUM_NONE:
-               skb->csum = csum_tcpudp_nofold(iph->saddr, iph->daddr, protocol,
-                                              skb->len - dataoff, 0);
-               skb->ip_summed = CHECKSUM_NONE;
-               return __skb_checksum_complete_head(skb, dataoff + len);
-       }
-       return csum;
-}
-EXPORT_SYMBOL_GPL(nf_ip_checksum_partial);
-
 int nf_ip_route(struct net *net, struct dst_entry **dst, struct flowi *fl,
                bool strict __always_unused)
 {
index 0b660c5..8980c8a 100644 (file)
@@ -1,9 +1,64 @@
+// SPDX-License-Identifier: GPL-2.0
 #include <linux/kernel.h>
 #include <linux/netfilter.h>
 #include <linux/netfilter_ipv4.h>
 #include <linux/netfilter_ipv6.h>
 #include <net/netfilter/nf_queue.h>
 
+#ifdef CONFIG_INET
+__sum16 nf_ip_checksum(struct sk_buff *skb, unsigned int hook,
+                      unsigned int dataoff, u8 protocol)
+{
+       const struct iphdr *iph = ip_hdr(skb);
+       __sum16 csum = 0;
+
+       switch (skb->ip_summed) {
+       case CHECKSUM_COMPLETE:
+               if (hook != NF_INET_PRE_ROUTING && hook != NF_INET_LOCAL_IN)
+                       break;
+               if ((protocol == 0 && !csum_fold(skb->csum)) ||
+                   !csum_tcpudp_magic(iph->saddr, iph->daddr,
+                                      skb->len - dataoff, protocol,
+                                      skb->csum)) {
+                       skb->ip_summed = CHECKSUM_UNNECESSARY;
+                       break;
+               }
+               /* fall through */
+       case CHECKSUM_NONE:
+               if (protocol == 0)
+                       skb->csum = 0;
+               else
+                       skb->csum = csum_tcpudp_nofold(iph->saddr, iph->daddr,
+                                                      skb->len - dataoff,
+                                                      protocol, 0);
+               csum = __skb_checksum_complete(skb);
+       }
+       return csum;
+}
+EXPORT_SYMBOL(nf_ip_checksum);
+#endif
+
+static __sum16 nf_ip_checksum_partial(struct sk_buff *skb, unsigned int hook,
+                                     unsigned int dataoff, unsigned int len,
+                                     u8 protocol)
+{
+       const struct iphdr *iph = ip_hdr(skb);
+       __sum16 csum = 0;
+
+       switch (skb->ip_summed) {
+       case CHECKSUM_COMPLETE:
+               if (len == skb->len - dataoff)
+                       return nf_ip_checksum(skb, hook, dataoff, protocol);
+               /* fall through */
+       case CHECKSUM_NONE:
+               skb->csum = csum_tcpudp_nofold(iph->saddr, iph->daddr, protocol,
+                                              skb->len - dataoff, 0);
+               skb->ip_summed = CHECKSUM_NONE;
+               return __skb_checksum_complete_head(skb, dataoff + len);
+       }
+       return csum;
+}
+
 __sum16 nf_checksum(struct sk_buff *skb, unsigned int hook,
                    unsigned int dataoff, u_int8_t protocol,
                    unsigned short family)