fix compilation of ip_nat_snmp_basic.c
Subsystems (2)
PATCH 1/1 fix compilation of ip_nat_snmp_basic.c
Hi Dave!
Please sumbit before 2.6.8-final, this just moves some code in order to make gcc happy.
Thanks!
Signed-off-by Adrian Bunk <[email protected]>
Signed-off-by Harald Welte <[email protected]>
net/ipv4/netfilter/ip_nat_snmp_basic.c renamed from net/ipv4/netfilter/ip_nat_snmp_basic.c.old +71 -71
@@ -862,6 +862,77 @@return 1 ; } +/* +* Fast checksum update for possibly oddly-aligned UDP byte, from the +* code example in the draft. +*/ +static void fast_csum (unsigned char *csum, +const unsigned char *optr, +const unsigned char *nptr, +int odd) +{ +long x, old, new; + + x = csum[0 ] *256 + csum[1 ]; + + x =~ x &0xFFFF ; + +if (odd) old = optr[0 ] *256 ; +else old = optr[0 ]; + + x -= old &0xFFFF ; +if (x <=0 ) { + x--; + x &=0xFFFF ; + } + +if (odd) new = nptr[0 ] *256 ; +else new = nptr[0 ]; + + x += new &0xFFFF ; +if (x &0x10000 ) { + x++; + x &=0xFFFF ; + } + + x =~ x &0xFFFF ; + csum[0 ] = x /256 ; + csum[1 ] = x &0xFF ; +} + +/* +* Mangle IP address. +* - begin points to the start of the snmp messgae +* - addr points to the start of the address +*/ +static inline void mangle_address (unsigned char *begin, +unsigned char *addr, +const struct oct1_map *map, +u_int16_t *check) +{ +if (map->from ==NOCT1 (*addr)) { +u_int32_t old; + +if (debug) +memcpy (&old, (unsigned char *)addr,sizeof (old)); + + *addr = map->to; + +/* Update UDP checksum if being used */ +if (*check) { +unsigned char odd = !((addr - begin) %2 ); + +fast_csum ((unsigned char *)check, + &map->from, &map->to, odd); + + } + +if (debug) +printk (KERN_DEBUG "bsalg: mapped %u.%u.%u.%u to " +"%u.%u.%u.%u\n" ,NIPQUAD (old),NIPQUAD (*addr)); + } +} + static unsigned char snmp_trap_decode(struct asn1_ctx *ctx, struct snmp_v1_trap *trap, const struct oct1_map *map,
@@ -952,77 +1023,6 @@printk ("\n" ); } -/* -* Fast checksum update for possibly oddly-aligned UDP byte, from the -* code example in the draft. -*/ -static void fast_csum (unsigned char *csum, -const unsigned char *optr, -const unsigned char *nptr, -int odd) -{ -long x, old, new; - - x = csum[0 ] *256 + csum[1 ]; - - x =~ x &0xFFFF ; - -if (odd) old = optr[0 ] *256 ; -else old = optr[0 ]; - - x -= old &0xFFFF ; -if (x <=0 ) { - x--; - x &=0xFFFF ; - } - -if (odd) new = nptr[0 ] *256 ; -else new = nptr[0 ]; - - x += new &0xFFFF ; -if (x &0x10000 ) { - x++; - x &=0xFFFF ; - } - - x =~ x &0xFFFF ; - csum[0 ] = x /256 ; - csum[1 ] = x &0xFF ; -} - -/* -* Mangle IP address. -* - begin points to the start of the snmp messgae -* - addr points to the start of the address -*/ -static inline void mangle_address (unsigned char *begin, -unsigned char *addr, -const struct oct1_map *map, -u_int16_t *check) -{ -if (map->from ==NOCT1 (*addr)) { -u_int32_t old; - -if (debug) -memcpy (&old, (unsigned char *)addr,sizeof (old)); - - *addr = map->to; - -/* Update UDP checksum if being used */ -if (*check) { -unsigned char odd = !((addr - begin) %2 ); - -fast_csum ((unsigned char *)check, - &map->from, &map->to, odd); - - } - -if (debug) -printk (KERN_DEBUG "bsalg: mapped %u.%u.%u.%u to " -"%u.%u.%u.%u\n" ,NIPQUAD (old),NIPQUAD (*addr)); - } -} -/* * Parse and mangle SNMP message according to mapping. * (And this is the fucking 'basic' method).
Signature · 5 lines
- Harald Welte <[email protected]> http://www.netfilter.org/ ============================================================================ "Fragmentation is like classful addressing -- an interesting early architectural error that shows how much experimentation was going on while IP was being designed." -- Paul Vixie
David S. Miller
AppliedQuoted 4 lines · On Sun, 1 Aug 2004 19:29:15 +0200 Harald Welte <[email protected]> wrote:
Hi Dave!
Please sumbit before 2.6.8-final, this just moves some code in order to make gcc happy.
Applied, thanks.