コード例 #1
0
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);
}
コード例 #2
0
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);
}