]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - include/net/ip6_checksum.h
ipv6: move csum_ipv6_magic() and udp6_csum_init() into static library
[karo-tx-linux.git] / include / net / ip6_checksum.h
index 652d3d309357c8d587c313817c61261479c78e0e..7686e3f5033d8364da7aad69be58b86018af7589 100644 (file)
 #include <linux/ipv6.h>
 
 #ifndef _HAVE_ARCH_IPV6_CSUM
-
-static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr,
-                                         const struct in6_addr *daddr,
-                                         __u32 len, unsigned short proto,
-                                         __wsum csum)
-{
-
-       int carry;
-       __u32 ulen;
-       __u32 uproto;
-       __u32 sum = (__force u32)csum;
-
-       sum += (__force u32)saddr->s6_addr32[0];
-       carry = (sum < (__force u32)saddr->s6_addr32[0]);
-       sum += carry;
-
-       sum += (__force u32)saddr->s6_addr32[1];
-       carry = (sum < (__force u32)saddr->s6_addr32[1]);
-       sum += carry;
-
-       sum += (__force u32)saddr->s6_addr32[2];
-       carry = (sum < (__force u32)saddr->s6_addr32[2]);
-       sum += carry;
-
-       sum += (__force u32)saddr->s6_addr32[3];
-       carry = (sum < (__force u32)saddr->s6_addr32[3]);
-       sum += carry;
-
-       sum += (__force u32)daddr->s6_addr32[0];
-       carry = (sum < (__force u32)daddr->s6_addr32[0]);
-       sum += carry;
-
-       sum += (__force u32)daddr->s6_addr32[1];
-       carry = (sum < (__force u32)daddr->s6_addr32[1]);
-       sum += carry;
-
-       sum += (__force u32)daddr->s6_addr32[2];
-       carry = (sum < (__force u32)daddr->s6_addr32[2]);
-       sum += carry;
-
-       sum += (__force u32)daddr->s6_addr32[3];
-       carry = (sum < (__force u32)daddr->s6_addr32[3]);
-       sum += carry;
-
-       ulen = (__force u32)htonl((__u32) len);
-       sum += ulen;
-       carry = (sum < ulen);
-       sum += carry;
-
-       uproto = (__force u32)htonl(proto);
-       sum += uproto;
-       carry = (sum < uproto);
-       sum += carry;
-
-       return csum_fold((__force __wsum)sum);
-}
-
+__sum16 csum_ipv6_magic(const struct in6_addr *saddr,
+                       const struct in6_addr *daddr,
+                       __u32 len, unsigned short proto,
+                       __wsum csum);
 #endif
 
 static __inline__ __sum16 tcp_v6_check(int len,
@@ -126,4 +73,5 @@ static inline void tcp_v6_send_check(struct sock *sk, struct sk_buff *skb)
        __tcp_v6_send_check(skb, &np->saddr, &np->daddr);
 }
 
+int udp6_csum_init(struct sk_buff *skb, struct udphdr *uh, int proto);
 #endif