From 3dc48fd876828a0f0d2d45e7ec93c71238da98b3 Mon Sep 17 00:00:00 2001 From: laforge Date: Mon, 18 Mar 2002 20:32:06 +0000 Subject: Fix ip6tables save/restore '! --syn' output of libip6t_tcp.c --- extensions/libip6t_tcp.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'extensions') diff --git a/extensions/libip6t_tcp.c b/extensions/libip6t_tcp.c index d158a8c..367a29f 100644 --- a/extensions/libip6t_tcp.c +++ b/extensions/libip6t_tcp.c @@ -220,7 +220,9 @@ parse(int c, char **argv, int invert, unsigned int *flags, exit_error(PARAMETER_PROBLEM, "--tcp-flags requires two args."); - parse_tcp_flags(tcpinfo, optarg, argv[optind++], invert); + parse_tcp_flags(tcpinfo, argv[optind-1], argv[optind], + invert); + optind++; *flags |= TCP_FLAGS; *nfcache |= NFC_IP6_TCPFLAGS; break; @@ -330,9 +332,9 @@ print_flags(u_int8_t mask, u_int8_t cmp, int invert, int numeric) if (numeric) printf("0x%02X/0x%02X ", mask, cmp); else { - print_tcpf(cmp); - printf("/"); print_tcpf(mask); + printf("/"); + print_tcpf(cmp); printf(" "); } } @@ -383,7 +385,7 @@ static void save(const struct ip6t_ip6 *ip, const struct ip6t_entry_match *match } if (tcpinfo->dpts[0] != 0 - && tcpinfo->dpts[1] != 0xFFFF) { + || tcpinfo->dpts[1] != 0xFFFF) { if (tcpinfo->invflags & IP6T_TCP_INV_DSTPT) printf("! "); if (tcpinfo->dpts[0] @@ -408,11 +410,13 @@ static void save(const struct ip6t_ip6 *ip, const struct ip6t_entry_match *match if (tcpinfo->invflags & IP6T_TCP_INV_FLAGS) printf("! "); - print_tcpf(tcpinfo->flg_cmp); + printf("--tcp-flags "); if (tcpinfo->flg_mask != 0xFF) { - printf("/"); print_tcpf(tcpinfo->flg_mask); } + printf(" "); + print_tcpf(tcpinfo->flg_cmp); + printf(" "); } } -- cgit v1.2.3