/* Function which parses command options; returns true if it ate an option */ 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 ipt_esp *espinfo = (struct ipt_esp *)(*match)->data; switch (c) { case '1': if (*flags & ESP_SPI) exit_error(PARAMETER_PROBLEM, "Only one `--espspi' allowed"); check_inverse(optarg, &invert, &optind, 0); parse_esp_spis(argv[optind-1], espinfo->spis); if (invert) espinfo->invflags |= IPT_ESP_INV_SPI; *flags |= ESP_SPI; break; default: return 0; } return 1; }
static int esp_parse(int c, char **argv, int invert, unsigned int *flags, const void *entry, struct xt_entry_match **match) { struct xt_esp *espinfo = (struct xt_esp *)(*match)->data; switch (c) { case '1': if (*flags & ESP_SPI) xtables_error(PARAMETER_PROBLEM, "Only one `--espspi' allowed"); xtables_check_inverse(optarg, &invert, &optind, 0, argv); parse_esp_spis(optarg, espinfo->spis); if (invert) espinfo->invflags |= XT_ESP_INV_SPI; *flags |= ESP_SPI; break; } return 1; }