diff -ru ipt-orig/extensions/libip6t_icmp6.c ipt-new/extensions/libip6t_icmp6.c --- ipt-orig/extensions/libip6t_icmp6.c 2006-04-14 20:05:41.000000000 -0700 +++ ipt-new/extensions/libip6t_icmp6.c 2006-06-29 18:07:19.000000000 -0700 @@ -149,6 +149,7 @@ { struct ip6t_icmp *icmpv6info = (struct ip6t_icmp *)m->data; + icmpv6info->type = 0xFF; icmpv6info->code[1] = 0xFF; } @@ -206,7 +207,12 @@ if (invert) printf("!"); - printf("type %u", type); + /* special hack for 'any' case */ + if (type == 0xFF) + printf("type any "); + else + printf("type %u", type); + if (code_min == 0 && code_max == 0xFF) printf(" "); else if (code_min == code_max) @@ -241,7 +247,12 @@ if (icmpv6->invflags & IP6T_ICMP_INV) printf("! "); - printf("--icmpv6-type %u", icmpv6->type); + /* special hack for 'any' case */ + if (icmpv6->type == 0xFF) + printf("--icmpv6-type any "); + else + printf("--icmpv6-type %u", icmpv6->type); + if (icmpv6->code[0] != 0 || icmpv6->code[1] != 0xFF) printf("/%u", icmpv6->code[0]); printf(" "); diff -ru ipt-orig/extensions/libipt_icmp.c ipt-new/extensions/libipt_icmp.c --- ipt-orig/extensions/libipt_icmp.c 2005-02-14 05:13:04.000000000 -0800 +++ ipt-new/extensions/libipt_icmp.c 2006-06-29 17:57:47.000000000 -0700 @@ -231,7 +231,12 @@ if (invert) printf("!"); - printf("type %u", type); + /* special hack for 'any' case */ + if (type == 0xFF) + printf("type any "); + else + printf("type %u", type); + if (code_min == 0 && code_max == 0xFF) printf(" "); else if (code_min == code_max)