size_t len, int *p_err);
bool parse_on_off(const char *msg, const char *realval, int *p_err);
-int parse_mapping(int *argcp, char ***argvp,
+int parse_mapping(int *argcp, char ***argvp, bool allow_all,
int (*mapping_cb)(__u32 key, char *value, void *data),
void *mapping_cb_data);
tail = addattr_nest(n, 1024, attrtype);
- if (parse_mapping(argcp, argvp, &parse_qos_mapping, n))
+ if (parse_mapping(argcp, argvp, false, &parse_qos_mapping, n))
return 1;
addattr_nest_end(n, tail);
return parse_one_of(msg, realval, values_on_off, ARRAY_SIZE(values_on_off), p_err);
}
-int parse_mapping(int *argcp, char ***argvp,
+int parse_mapping(int *argcp, char ***argvp, bool allow_all,
int (*mapping_cb)(__u32 key, char *value, void *data),
void *mapping_cb_data)
{
break;
*colon = '\0';
- if (get_u32(&key, *argv, 0)) {
+ if (allow_all && matches(*argv, "all") == 0) {
+ key = (__u32) -1;
+ } else if (get_u32(&key, *argv, 0)) {
ret = 1;
break;
}