summaryrefslogtreecommitdiff
path: root/include/net
diff options
context:
space:
mode:
authorJulius Volz <juliusv@google.com>2008-09-02 15:55:42 +0200
committerSimon Horman <horms@verge.net.au>2008-09-05 11:17:07 +1000
commit0bbdd42b7efa66685b6d74701bcde3a596a3a59d (patch)
tree98b1cc6fc7b856768b7923f2747e64c2ccc7878b /include/net
parent3b047d9d0407e78a52f009835a0e26cb62edb8c7 (diff)
downloadlinux-3.10-0bbdd42b7efa66685b6d74701bcde3a596a3a59d.tar.gz
linux-3.10-0bbdd42b7efa66685b6d74701bcde3a596a3a59d.tar.bz2
linux-3.10-0bbdd42b7efa66685b6d74701bcde3a596a3a59d.zip
IPVS: Extend protocol DNAT/SNAT and state handlers
Extend protocol DNAT/SNAT and state handlers to work with IPv6. Also change/introduce new checksumming helper functions for this. Signed-off-by: Julius Volz <juliusv@google.com> Signed-off-by: Simon Horman <horms@verge.net.au>
Diffstat (limited to 'include/net')
-rw-r--r--include/net/ip_vs.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/include/net/ip_vs.h b/include/net/ip_vs.h
index 68f004f9bcc..c173f1a7de2 100644
--- a/include/net/ip_vs.h
+++ b/include/net/ip_vs.h
@@ -904,6 +904,17 @@ static inline __wsum ip_vs_check_diff4(__be32 old, __be32 new, __wsum oldsum)
return csum_partial((char *) diff, sizeof(diff), oldsum);
}
+#ifdef CONFIG_IP_VS_IPV6
+static inline __wsum ip_vs_check_diff16(const __be32 *old, const __be32 *new,
+ __wsum oldsum)
+{
+ __be32 diff[8] = { ~old[3], ~old[2], ~old[1], ~old[0],
+ new[3], new[2], new[1], new[0] };
+
+ return csum_partial((char *) diff, sizeof(diff), oldsum);
+}
+#endif
+
static inline __wsum ip_vs_check_diff2(__be16 old, __be16 new, __wsum oldsum)
{
__be16 diff[2] = { ~old, new };