static unsigned int state_parse_states(const char *arg) { const char *comma; unsigned int mask = 0, flag; while ((comma = strchr(arg, ',')) != NULL) { if (comma == arg) goto badstate; flag = state_parse_state(arg, comma-arg); if (flag == 0) goto badstate; mask |= flag; arg = comma+1; } if (!*arg) xtables_error(PARAMETER_PROBLEM, "\"--state\" requires a list of " "states with no spaces, e.g. " "ESTABLISHED,RELATED"); if (strlen(arg) == 0) goto badstate; flag = state_parse_state(arg, strlen(arg)); if (flag == 0) goto badstate; mask |= flag; return mask; badstate: xtables_error(PARAMETER_PROBLEM, "Bad state \"%s\"", arg); }
static void state_parse_states(const char *arg, struct xt_state_info *sinfo) { const char *comma; while ((comma = strchr(arg, ',')) != NULL) { if (comma == arg || !state_parse_state(arg, comma-arg, sinfo)) xtables_error(PARAMETER_PROBLEM, "Bad state \"%s\"", arg); arg = comma+1; } if (!*arg) xtables_error(PARAMETER_PROBLEM, "\"--state\" requires a list of " "states with no spaces, e.g. " "ESTABLISHED,RELATED"); if (strlen(arg) == 0 || !state_parse_state(arg, strlen(arg), sinfo)) xtables_error(PARAMETER_PROBLEM, "Bad state \"%s\"", arg); }