summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Engelhardt <jengelh@medozas.de>2011-02-27 17:38:34 +0100
committerJan Engelhardt <jengelh@medozas.de>2011-04-06 12:54:23 +0200
commitd78254d7f9d18ef76377a3013302430cce8ea702 (patch)
tree574827d62c95ade4b56e3a5cb2268b6983820705
parent93112921153c43dc0521be499f6a792d2aaae5e9 (diff)
libxtables: min-max option support
Signed-off-by: Jan Engelhardt <jengelh@medozas.de>
-rw-r--r--include/xtables.h.in3
-rw-r--r--xtoptions.c5
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\", "