]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - net/ipv4/netfilter/ipt_TTL.c
[NETFILTER]: NAT annotations
[linux-2.6-omap-h63xx.git] / net / ipv4 / netfilter / ipt_TTL.c
index f48892ae0be5c8bbd094b7296929ed45f94df4bd..96e79cc6d0f233dd20cb95b4ffc76336a72d2a7d 100644 (file)
@@ -23,11 +23,10 @@ static unsigned int
 ipt_ttl_target(struct sk_buff **pskb,
               const struct net_device *in, const struct net_device *out,
               unsigned int hooknum, const struct xt_target *target,
-              const void *targinfo, void *userinfo)
+              const void *targinfo)
 {
        struct iphdr *iph;
        const struct ipt_TTL_info *info = targinfo;
-       u_int16_t diffs[2];
        int new_ttl;
 
        if (!skb_make_writable(pskb, (*pskb)->len))
@@ -55,12 +54,10 @@ ipt_ttl_target(struct sk_buff **pskb,
        }
 
        if (new_ttl != iph->ttl) {
-               diffs[0] = htons(((unsigned)iph->ttl) << 8) ^ 0xFFFF;
+               iph->check = nf_csum_update(ntohs((iph->ttl << 8)) ^ 0xFFFF,
+                                           ntohs(new_ttl << 8),
+                                           iph->check);
                iph->ttl = new_ttl;
-               diffs[1] = htons(((unsigned)iph->ttl) << 8);
-               iph->check = csum_fold(csum_partial((char *)diffs,
-                                                   sizeof(diffs),
-                                                   iph->check^0xFFFF));
        }
 
        return IPT_CONTINUE;
@@ -70,7 +67,6 @@ static int ipt_ttl_checkentry(const char *tablename,
                const void *e,
                const struct xt_target *target,
                void *targinfo,
-               unsigned int targinfosize,
                unsigned int hook_mask)
 {
        struct ipt_TTL_info *info = targinfo;