summaryrefslogtreecommitdiffstats
path: root/src/utils.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils.c')
-rw-r--r--src/utils.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/utils.c b/src/utils.c
index d73c5f6..bbe44b4 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -192,3 +192,18 @@ char *nftnl_attr_get_ifname(const struct nlattr *attr)
return NULL;
}
}
+
+int nftnl_parse_str_attr(const struct nlattr *tb, int attr,
+ const char **field, uint32_t *flags)
+{
+ if (!tb)
+ return 0;
+
+ if (*flags & (1 << attr))
+ xfree(*field);
+ *field = strdup(mnl_attr_get_str(tb));
+ if (!*field)
+ return -1;
+ *flags |= (1 << attr);
+ return 0;
+}