From ceadd627afeb5167ac78902569cf0c29a3b1ce40 Mon Sep 17 00:00:00 2001 From: laforge Date: Tue, 25 Feb 2003 11:54:56 +0000 Subject: update to condition extension, add condition6 (Stephane Ouellette) --- extensions/libipt_condition.c | 118 ++++++++++++++++++++++++------------------ 1 file changed, 68 insertions(+), 50 deletions(-) (limited to 'extensions/libipt_condition.c') diff --git a/extensions/libipt_condition.c b/extensions/libipt_condition.c index 351c1aa..41216ca 100644 --- a/extensions/libipt_condition.c +++ b/extensions/libipt_condition.c @@ -8,89 +8,107 @@ #include -static void help(void) +static void +help(void) { - printf("condition match v%s options:\n" - "--condition [!] filename Match on boolean value stored in /proc file" - "\n", IPTABLES_VERSION); + printf("condition match v%s options:\n" + "--condition [!] filename " + "Match on boolean value stored in /proc file\n", + IPTABLES_VERSION); } -static struct option opts[] = { { "condition", 1, 0, 'X' }, { 0 } }; -static void init(struct ipt_entry_match *m, unsigned int *nfcache) +static struct option opts[] = { + { .name = "condition", .has_arg = 1, .flag = 0, .val = 'X' }, + { .name = 0 } +}; + + +static void +init(struct ipt_entry_match *m, unsigned int *nfcache) { - *nfcache |= NFC_UNKNOWN; + *nfcache |= NFC_UNKNOWN; } -static int parse(int c, char **argv, int invert, unsigned int *flags, - const struct ipt_entry *entry, unsigned int *nfcache, - struct ipt_entry_match **match) + +static int +parse(int c, char **argv, int invert, unsigned int *flags, + const struct ipt_entry *entry, unsigned int *nfcache, + struct ipt_entry_match **match) { - struct condition_info *info = (struct condition_info*)(*match)->data; + struct condition_info *info = + (struct condition_info *) (*match)->data; - check_inverse(optarg, &invert, &optind, 0); + check_inverse(optarg, &invert, &optind, 0); - if(*flags) - exit_error(PARAMETER_PROBLEM, "Can't specify multiple conditions"); + if (*flags) + exit_error(PARAMETER_PROBLEM, + "Can't specify multiple conditions"); - if(c == 'X') - { - if(strlen(argv[optind-1]) < VARIABLE_NAME_LEN) - strcpy(info->name, argv[optind-1]); - else - exit_error(PARAMETER_PROBLEM, "File name too long"); + if (c == 'X') { + if (strlen(argv[optind - 1]) < CONDITION_NAME_LEN) + strcpy(info->name, argv[optind - 1]); + else + exit_error(PARAMETER_PROBLEM, + "File name too long"); - info->invert = invert; - *flags = 1; - return 1; - } + info->invert = invert; + *flags = 1; + return 1; + } - return 0; + return 0; } -static void final_check(unsigned int flags) +static void +final_check(unsigned int flags) { - if(!flags) - exit_error(PARAMETER_PROBLEM, "Condition match: must specify --condition"); + if (!flags) + exit_error(PARAMETER_PROBLEM, + "Condition match: must specify --condition"); } -static void print(const struct ipt_ip *ip, - const struct ipt_entry_match *match, int numeric) +static void +print(const struct ipt_ip *ip, + const struct ipt_entry_match *match, int numeric) { - const struct condition_info *info = (const struct condition_info*)match->data; + const struct condition_info *info = + (const struct condition_info *) match->data; - printf("condition %s%s ", (info->invert) ? "!" : "", info->name); + printf("condition %s%s ", (info->invert) ? "!" : "", info->name); } -static void save(const struct ipt_ip *ip, const struct ipt_entry_match *match) +static void +save(const struct ipt_ip *ip, + const struct ipt_entry_match *match) { - const struct condition_info *info = (const struct condition_info*)match->data; + const struct condition_info *info = + (const struct condition_info *) match->data; - printf("--condition %s%s ", (info->invert) ? "! " : "", info->name); + printf("--condition %s%s ", (info->invert) ? "! " : "", info->name); } static struct iptables_match condition = { - NULL, - "condition", - IPTABLES_VERSION, - IPT_ALIGN(sizeof(struct condition_info)), - IPT_ALIGN(sizeof(struct condition_info)), - &help, - &init, - &parse, - &final_check, - &print, - &save, - opts + .name = "condition", + .version = IPTABLES_VERSION, + .size = IPT_ALIGN(sizeof(struct condition_info)), + .userspacesize = IPT_ALIGN(sizeof(struct condition_info)), + .help = &help, + .init = &init, + .parse = &parse, + .final_check = &final_check, + .print = &print, + .save = &save, + .extra_opts = opts }; -void _init(void) +void +_init(void) { - register_match(&condition); + register_match(&condition); } - -- cgit v1.2.3