[NETFILTER]: Use correct byteorder in ICMP NAT
authorPatrick McHardy <kaber@trash.net>
Fri, 22 Jul 2005 19:51:38 +0000 (12:51 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 22 Jul 2005 19:51:38 +0000 (12:51 -0700)
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/netfilter/ip_nat_proto_icmp.c

index a558cf0eee8a4b0a3f8210362ed292937178f7a1..6596c9ee1655914db4789691416d60aee56ea86c 100644 (file)
@@ -35,16 +35,17 @@ icmp_unique_tuple(struct ip_conntrack_tuple *tuple,
                  const struct ip_conntrack *conntrack)
 {
        static u_int16_t id;
-       unsigned int range_size
-               = (unsigned int)range->max.icmp.id - range->min.icmp.id + 1;
+       unsigned int range_size;
        unsigned int i;
 
+       range_size = ntohs(range->max.icmp.id) - ntohs(range->min.icmp.id) + 1;
        /* If no range specified... */
        if (!(range->flags & IP_NAT_RANGE_PROTO_SPECIFIED))
                range_size = 0xFFFF;
 
        for (i = 0; i < range_size; i++, id++) {
-               tuple->src.u.icmp.id = range->min.icmp.id + (id % range_size);
+               tuple->src.u.icmp.id = htons(ntohs(range->min.icmp.id) +
+                                            (id % range_size));
                if (!ip_nat_used_tuple(tuple, conntrack))
                        return 1;
        }