char *rtnl_rtntype_n2a(int id, char *buf, int len);
int rtnl_rtntype_a2n(int *id, char *arg);
-int get_rt_realms(__u32 *realms, char *arg);
-
+int get_rt_realms_or_raw(__u32 *realms, char *arg);
#endif /* __RTM_MAP_H__ */
} else if (matches(*argv, "realms") == 0) {
__u32 realm;
NEXT_ARG();
- if (get_rt_realms(&realm, *argv))
+ if (get_rt_realms_or_raw(&realm, *argv))
invarg("\"realm\" value is invalid\n", *argv);
rta_addattr32(rta, 4096, RTA_FLOW, realm);
rtnh->rtnh_len += sizeof(struct rtattr) + 4;
} else if (matches(*argv, "realms") == 0) {
__u32 realm;
NEXT_ARG();
- if (get_rt_realms(&realm, *argv))
+ if (get_rt_realms_or_raw(&realm, *argv))
invarg("\"realm\" value is invalid\n", *argv);
addattr32(&req.n, sizeof(req), RTA_FLOW, realm);
} else if (strcmp(*argv, "onlink") == 0) {
} else if (matches(*argv, "realms") == 0) {
__u32 realm;
NEXT_ARG();
- if (get_rt_realms(&realm, *argv))
+ if (get_rt_realms_or_raw(&realm, *argv))
invarg("invalid realms\n", *argv);
filter.realm = realm;
filter.realmmask = ~0U;
} else if (matches(*argv, "realms") == 0) {
__u32 realm;
NEXT_ARG();
- if (get_rt_realms(&realm, *argv))
+ if (get_rt_realms_or_raw(&realm, *argv))
invarg("invalid realms\n", *argv);
addattr32(&req.n, sizeof(req), FRA_FLOW, realm);
} else if (matches(*argv, "table") == 0 ||
return 0;
}
-int get_rt_realms(__u32 *realms, char *arg)
+static int get_rt_realms(__u32 *realms, char *arg)
{
__u32 realm = 0;
char *p = strchr(arg, '/');
*realms |= realm;
return 0;
}
+
+int get_rt_realms_or_raw(__u32 *realms, char *arg)
+{
+ if (!get_rt_realms(realms, arg))
+ return 0;
+
+ return get_unsigned(realms, arg, 0);
+}