diff -ur --exclude-from=/tmp/srcdiff.excludes.hsvBiq -N orig-linux-2.6.11/include/linux/netfilter_ipv6/ip6_tables.h linux-2.6.11/include/linux/netfilter_ipv6/ip6_tables.h --- orig-linux-2.6.11/include/linux/netfilter_ipv6/ip6_tables.h 2005-03-14 13:40:33.000000000 +0200 +++ linux-2.6.11/include/linux/netfilter_ipv6/ip6_tables.h 2005-03-15 04:09:12.197387923 +0200 @@ -111,7 +111,8 @@ #define IP6T_F_PROTO 0x01 /* Set if rule cares about upper protocols */ #define IP6T_F_TOS 0x02 /* Match the TOS. */ -#define IP6T_F_MASK 0x03 /* All possible flag bits mask. */ +#define IP6T_F_GOTO 0x04 /* Set if jump is a goto */ +#define IP6T_F_MASK 0x07 /* All possible flag bits mask. */ /* Values for "inv" field in struct ip6t_ip6. */ #define IP6T_INV_VIA_IN 0x01 /* Invert the sense of IN IFACE. */ diff -ur --exclude-from=/tmp/srcdiff.excludes.hsvBiq -N orig-linux-2.6.11/net/ipv6/netfilter/ip6_tables.c linux-2.6.11/net/ipv6/netfilter/ip6_tables.c --- orig-linux-2.6.11/net/ipv6/netfilter/ip6_tables.c 2005-03-14 13:40:34.000000000 +0200 +++ linux-2.6.11/net/ipv6/netfilter/ip6_tables.c 2005-03-15 03:51:43.298086457 +0200 @@ -436,7 +436,7 @@ continue; } if (table_base + v - != (void *)e + e->next_offset) { + != (void *)e + e->next_offset && !(e->ipv6.flags & IP6T_F_GOTO)) { /* Save old back ptr in next entry */ struct ip6t_entry *next = (void *)e + e->next_offset;