diff options
author | Jan Engelhardt <jengelh@medozas.de> | 2011-02-27 17:38:34 +0100 |
---|---|---|
committer | Jan Engelhardt <jengelh@medozas.de> | 2011-04-06 12:54:23 +0200 |
commit | d78254d7f9d18ef76377a3013302430cce8ea702 (patch) | |
tree | 574827d62c95ade4b56e3a5cb2268b6983820705 | |
parent | 93112921153c43dc0521be499f6a792d2aaae5e9 (diff) |
libxtables: min-max option support
Signed-off-by: Jan Engelhardt <jengelh@medozas.de>
-rw-r--r-- | include/xtables.h.in | 3 | ||||
-rw-r--r-- | xtoptions.c | 5 |
2 files changed, 8 insertions, 0 deletions
diff --git a/include/xtables.h.in b/include/xtables.h.in index 91a6eaaa..14d7b043 100644 --- a/include/xtables.h.in +++ b/include/xtables.h.in @@ -76,6 +76,8 @@ enum xt_option_flags { * @flags: bitmask of option flags, see %XTOPT_* * @ptroff: offset into private structure for member * @size: size of the item pointed to by @ptroff; this is a safeguard + * @min: lowest allowed value (for singular integral types) + * @max: highest allowed value (for singular integral types) */ struct xt_option_entry { const char *name; @@ -83,6 +85,7 @@ struct xt_option_entry { unsigned int id, excl, also, flags; unsigned int ptroff; size_t size; + unsigned int min, max; }; /** diff --git a/xtoptions.c b/xtoptions.c index 843395be..6a119ec7 100644 --- a/xtoptions.c +++ b/xtoptions.c @@ -89,6 +89,11 @@ static void xtopt_parse_int(struct xt_option_call *cb) unsigned int lmin = 0, lmax = UINT32_MAX; unsigned int value; + if (cb->entry->min != 0) + lmin = cb->entry->min; + if (cb->entry->max != 0) + lmax = cb->entry->max; + if (!xtables_strtoui(cb->arg, NULL, &value, lmin, lmax)) xt_params->exit_err(PARAMETER_PROBLEM, "%s: bad value for option \"--%s\", " |