6 #include <libmnl/libmnl.h>
7 #include <linux/netfilter/nf_tables.h>
12 void nftnl_str_array_clear(
struct nftnl_str_array *sa)
15 free(sa->array[--sa->len]);
19 int nftnl_str_array_set(
struct nftnl_str_array *sa,
const char *
const *array)
26 nftnl_str_array_clear(sa);
27 sa->array = calloc(len + 1,
sizeof(
char *));
31 while (sa->len < len) {
32 sa->array[sa->len] = strdup(array[sa->len]);
33 if (!sa->array[sa->len]) {
34 nftnl_str_array_clear(sa);
42 int nftnl_parse_devs(
struct nftnl_str_array *sa,
const struct nlattr *nest)
47 mnl_attr_for_each_nested(attr, nest) {
48 if (mnl_attr_get_type(attr) != NFTA_DEVICE_NAME)
53 nftnl_str_array_clear(sa);
54 sa->array = calloc(len + 1,
sizeof(
char *));
58 mnl_attr_for_each_nested(attr, nest) {
59 sa->array[sa->len] = strdup(mnl_attr_get_str(attr));
60 if (!sa->array[sa->len]) {
61 nftnl_str_array_clear(sa);