>+static const struct option route_opts[] = { >+ { "route-src-exists", 0, NULL, '1' }, >+ { "route-src-eq", 1, NULL, '2' }, >+ { "route-src-gt", 1, NULL, '3' }, >+ { "route-src-lt", 1, NULL, '4' }, >+ { "route-dst-exists", 0, NULL, '5' }, >+ { "route-dst-eq", 1, NULL, '6' }, >+ { "route-dst-gt", 1, NULL, '7' }, >+ { "route-dst-lt", 1, NULL, '8' }, >+ { .name = NULL } >+}; You are mixing non-C99 and C99 style. >+static int route_parse(int c, char **argv, int invert, unsigned int *flags, >+ const void *entry, struct xt_entry_match **match) >+{ >+ struct xt_route_info *info = (struct xt_route_info *) (*match)->data; >+ unsigned int value; >+ >+ check_inverse(optarg, &invert, &optind, 0); I would not bother supporting intraplaced ! at all. Just remove that line. >+ case '6': >+ if (invert) >+ exit_error(PARAMETER_PROBLEM, >+ "route: unexpected `!'"); >+ >+ if (string_to_number(optarg, 1, 128, &value) == -1) >+ exit_error(PARAMETER_PROBLEM, >+ "route: Expected prefix between 1 and 128"); >+ >+ info->mode = XT_ROUTE_DST_EQ; >+ info->value = value; >+ break; There is a lot of code to unify between route_mt_parse and route_mt6_parse. -- To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html