From 3a4e719b8c2d2ab0033ade5007d62050ba553b1e Mon Sep 17 00:00:00 2001 From: Jan Engelhardt Date: Mon, 1 Sep 2008 18:40:23 -0400 Subject: [PATCH] src: compile fixes for 2.6.18 and 2.6.19 I did not test f30793f591debd2644b60b9449acd334f1f8f757 on all supported kernel versions and noticed too late. --- extensions/compat_xtables.c | 16 +++++++++++++--- extensions/compat_xtnu.h | 1 + 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/extensions/compat_xtables.c b/extensions/compat_xtables.c index 8dc9f00..f7ff53a 100644 --- a/extensions/compat_xtables.c +++ b/extensions/compat_xtables.c @@ -20,6 +20,11 @@ #include "compat_skbuff.h" #include "compat_xtnu.h" +#if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 19) +typedef __u16 __bitwise __sum16; +typedef __u32 __bitwise __wsum; +#endif + #if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 22) static int xtnu_match_run(const struct sk_buff *skb, const struct net_device *in, const struct net_device *out, @@ -384,16 +389,21 @@ int xtnu_neigh_hh_output(struct hh_cache *hh, struct sk_buff *skb) } EXPORT_SYMBOL_GPL(xtnu_neigh_hh_output); -static inline void csum_replace4(__sum16 *sum, __be32 from, __be32 to) +static inline __wsum xtnu_csum_unfold(__sum16 n) +{ + return (__force __wsum)n; +} + +static inline void xtnu_csum_replace4(__sum16 *sum, __be32 from, __be32 to) { __be32 diff[] = {~from, to}; *sum = csum_fold(csum_partial((char *)diff, sizeof(diff), - ~csum_unfold(*sum))); + ~xtnu_csum_unfold(*sum))); } void xtnu_csum_replace2(__sum16 *sum, __be16 from, __be16 to) { - csum_replace4(sum, (__force __be32)from, (__force __be32)to); + xtnu_csum_replace4(sum, (__force __be32)from, (__force __be32)to); } EXPORT_SYMBOL_GPL(xtnu_csum_replace2); #endif diff --git a/extensions/compat_xtnu.h b/extensions/compat_xtnu.h index 3c9334f..00c94cf 100644 --- a/extensions/compat_xtnu.h +++ b/extensions/compat_xtnu.h @@ -82,5 +82,6 @@ extern void xtnu_unregister_targets(struct xtnu_target *, unsigned int); extern struct xt_match *xtnu_request_find_match(unsigned int, const char *, uint8_t); extern int xtnu_neigh_hh_output(struct hh_cache *, struct sk_buff *); +extern void xtnu_csum_replace2(__u16 __bitwise *, __be16, __be16); #endif /* _COMPAT_XTNU_H */