cb->val.ethermacmask, ETH_ALEN);
break;
-#define RANGE_ASSIGN(name, fname, val) { \
+#define RANGE_ASSIGN(fname, val) { \
stpinfo->config.fname##l = val[0]; \
stpinfo->config.fname##u = cb->nvals > 1 ? val[1] : val[0]; \
- if (stpinfo->config.fname##u < stpinfo->config.fname##l) \
- xtables_error(PARAMETER_PROBLEM, \
- "Bad --stp-" name " range"); \
}
case O_RPRIO:
- RANGE_ASSIGN("root-prio", root_prio, cb->val.u16_range);
+ RANGE_ASSIGN(root_prio, cb->val.u16_range);
break;
case O_RCOST:
- RANGE_ASSIGN("root-cost", root_cost, cb->val.u32_range);
+ RANGE_ASSIGN(root_cost, cb->val.u32_range);
break;
case O_SPRIO:
- RANGE_ASSIGN("sender-prio", sender_prio, cb->val.u16_range);
+ RANGE_ASSIGN(sender_prio, cb->val.u16_range);
break;
case O_PORT:
- RANGE_ASSIGN("port", port, cb->val.u16_range);
+ RANGE_ASSIGN(port, cb->val.u16_range);
break;
case O_MSGAGE:
- RANGE_ASSIGN("msg-age", msg_age, cb->val.u16_range);
+ RANGE_ASSIGN(msg_age, cb->val.u16_range);
break;
case O_MAXAGE:
- RANGE_ASSIGN("max-age", max_age, cb->val.u16_range);
+ RANGE_ASSIGN(max_age, cb->val.u16_range);
break;
case O_HTIME:
- RANGE_ASSIGN("hello-time", hello_time, cb->val.u16_range);
+ RANGE_ASSIGN(hello_time, cb->val.u16_range);
break;
case O_FWDD:
- RANGE_ASSIGN("forward-delay", forward_delay, cb->val.u16_range);
+ RANGE_ASSIGN(forward_delay, cb->val.u16_range);
break;
#undef RANGE_ASSIGN
}
-m ah --ahspi :3;-m ah --ahspi 0:3;OK
-m ah --ahspi 3:;-m ah --ahspi 3:4294967295;OK
-m ah --ahspi 3:3;-m ah --ahspi 3;OK
--m ah --ahspi 4:3;=;OK
+-m ah --ahspi 4:3;;FAIL
-m frag --fragid 42:;-m frag --fragid 42:4294967295;OK
-m frag --fragid 1:42;=;OK
-m frag --fragid 3:3;-m frag --fragid 3;OK
--m frag --fragid 4:3;=;OK
+-m frag --fragid 4:3;;FAIL
-m frag --fraglen 42;=;OK
-m frag --fragres;=;OK
-m frag --fragfirst;=;OK
-m rt --rt-segsleft :3;-m rt --rt-segsleft 0:3;OK
-m rt --rt-segsleft 3:;-m rt --rt-segsleft 3:4294967295;OK
-m rt --rt-segsleft 3:3;-m rt --rt-segsleft 3;OK
--m rt --rt-segsleft 4:3;=;OK
+-m rt --rt-segsleft 4:3;;FAIL
-p ah -m ah --ahspi :3;-p ah -m ah --ahspi 0:3;OK
-p ah -m ah --ahspi 3:;-p ah -m ah --ahspi 3:4294967295;OK
-p ah -m ah --ahspi 3:3;-p ah -m ah --ahspi 3;OK
--p ah -m ah --ahspi 4:3;=;OK
+-p ah -m ah --ahspi 4:3;;FAIL
if (cb->nvals == 2)
sinfo->count.to = cb->val.u64_range[1];
- if (sinfo->count.to < sinfo->count.from)
- xtables_error(PARAMETER_PROBLEM, "%llu should be less than %llu",
- (unsigned long long)sinfo->count.from,
- (unsigned long long)sinfo->count.to);
if (cb->invert) {
i = sinfo->count.from;
sinfo->count.from = sinfo->count.to;
-m conntrack --ctexpire 42949672956;;FAIL
-m conntrack --ctexpire -1;;FAIL
-m conntrack --ctexpire 3:3;-m conntrack --ctexpire 3;OK
--m conntrack --ctexpire 4:3;=;OK
+-m conntrack --ctexpire 4:3;;FAIL
-m conntrack --ctdir ORIGINAL;=;OK
-m conntrack --ctdir REPLY;=;OK
-m conntrack --ctstatus NONE;=;OK
-p esp -m esp --espspi 4:;-p esp -m esp --espspi 4:4294967295;OK
-p esp -m esp --espspi 3:4;=;OK
-p esp -m esp --espspi 4:4;-p esp -m esp --espspi 4;OK
--p esp -m esp --espspi 4:3;=;OK
+-p esp -m esp --espspi 4:3;;FAIL
-p esp -m esp;=;OK
-m esp;;FAIL
-p ipcomp -m ipcomp --ipcompspi 4:;-p ipcomp -m ipcomp --ipcompspi 4:4294967295;OK
-p ipcomp -m ipcomp --ipcompspi 3:4;=;OK
-p ipcomp -m ipcomp --ipcompspi 4:4;-p ipcomp -m ipcomp --ipcompspi 4;OK
--p ipcomp -m ipcomp --ipcompspi 4:3;=;OK
+-p ipcomp -m ipcomp --ipcompspi 4:3;;FAIL
-m length --length 0:65536;;FAIL
-m length --length -1:65535;;FAIL
-m length --length 4:4;-m length --length 4;OK
--m length --length 4:3;=;OK
+-m length --length 4:3;;FAIL
-m length;;FAIL
size_t esize = xtopt_esize_by_type(entry->type);
const uintmax_t lmax = xtopt_max_by_type(entry->type);
void *put = XTOPT_MKPTR(cb);
+ uintmax_t value, lmin = 0;
unsigned int maxiter;
- uintmax_t value;
char *end = "";
char sep = ':';
end = (char *)arg;
value = (cb->nvals == 1) ? lmax : 0;
} else {
- if (!xtables_strtoul(arg, &end, &value, 0, lmax))
+ if (!xtables_strtoul(arg, &end, &value, lmin, lmax))
xt_params->exit_err(PARAMETER_PROBLEM,
"%s: bad value for option \"--%s\" near "
- "\"%s\", or out of range (0-%ju).\n",
- cb->ext_name, entry->name, arg, lmax);
+ "\"%s\", or out of range (%ju-%ju).\n",
+ cb->ext_name, entry->name, arg, lmin, lmax);
if (*end != '\0' && *end != sep)
xt_params->exit_err(PARAMETER_PROBLEM,
"%s: Argument to \"--%s\" has "
"unexpected characters near \"%s\".\n",
cb->ext_name, entry->name, end);
+ lmin = value;
}
xtopt_mint_value_to_cb(cb, value);
++cb->nvals;