From cde7c7d90c555a4aa1a9c249c8f4cf42d49fe05c Mon Sep 17 00:00:00 2001 From: laforge Date: Fri, 20 Sep 2002 15:25:13 +0000 Subject: fix connmark and mark match save() functions --- extensions/libipt_connmark.c | 22 ++++++++++++---------- extensions/libipt_mark.c | 24 ++++++++++++++---------- 2 files changed, 26 insertions(+), 20 deletions(-) diff --git a/extensions/libipt_connmark.c b/extensions/libipt_connmark.c index 14cbe33..8f81f02 100644 --- a/extensions/libipt_connmark.c +++ b/extensions/libipt_connmark.c @@ -65,11 +65,8 @@ parse(int c, char **argv, int invert, unsigned int *flags, } static void -print_mark(unsigned long mark, unsigned long mask, int invert, int numeric) +print_mark(unsigned long mark, unsigned long mask, int numeric) { - if (invert) - fputc('!', stdout); - if(mask != 0xffffffff) printf("0x%lx/0x%lx ", mark, mask); else @@ -91,20 +88,25 @@ print(const struct ipt_ip *ip, const struct ipt_entry_match *match, int numeric) { + struct ipt_connmark_info *info = (struct ipt_connmark_info *)match->data; + printf("CONNMARK match "); - print_mark(((struct ipt_connmark_info *)match->data)->mark, - ((struct ipt_connmark_info *)match->data)->mask, - ((struct ipt_connmark_info *)match->data)->invert, numeric); + if (info->invert) + printf("!"); + print_mark(info->mark, info->mask, numeric); } /* Saves the union ipt_matchinfo in parsable form to stdout. */ static void save(const struct ipt_ip *ip, const struct ipt_entry_match *match) { + struct ipt_connmark_info *info = (struct ipt_connmark_info *)match->data; + + if (info->invert) + printf("! "); + printf("--mark "); - print_mark(((struct ipt_connmark_info *)match->data)->mark, - ((struct ipt_connmark_info *)match->data)->mask, - ((struct ipt_connmark_info *)match->data)->invert, 0); + print_mark(info->mark, info->mask, 0); } static diff --git a/extensions/libipt_mark.c b/extensions/libipt_mark.c index 82e826d..4aa780b 100644 --- a/extensions/libipt_mark.c +++ b/extensions/libipt_mark.c @@ -65,11 +65,8 @@ parse(int c, char **argv, int invert, unsigned int *flags, } static void -print_mark(unsigned long mark, unsigned long mask, int invert, int numeric) +print_mark(unsigned long mark, unsigned long mask, int numeric) { - if (invert) - fputc('!', stdout); - if(mask != 0xffffffff) printf("0x%lx/0x%lx ", mark, mask); else @@ -91,20 +88,27 @@ print(const struct ipt_ip *ip, const struct ipt_entry_match *match, int numeric) { + struct ipt_mark_info *info = (struct ipt_mark_info *)match->data; + printf("MARK match "); - print_mark(((struct ipt_mark_info *)match->data)->mark, - ((struct ipt_mark_info *)match->data)->mask, - ((struct ipt_mark_info *)match->data)->invert, numeric); + + if (info->invert) + printf("!"); + + print_mark(info->mark, info->mask, numeric); } /* Saves the union ipt_matchinfo in parsable form to stdout. */ static void save(const struct ipt_ip *ip, const struct ipt_entry_match *match) { + struct ipt_mark_info *info = (struct ipt_mark_info *)match->data; + + if (info->invert) + printf("! "); + printf("--mark "); - print_mark(((struct ipt_mark_info *)match->data)->mark, - ((struct ipt_mark_info *)match->data)->mask, - ((struct ipt_mark_info *)match->data)->invert, 0); + print_mark(info->mark, info->mask, 0); } static -- cgit v1.2.3