6#include <libmnl/libmnl.h>
7#include <linux/netfilter/nf_tables.h>
12void nftnl_str_array_clear(
struct nftnl_str_array *sa)
15 free(sa->array[--sa->len]);
19int 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);
42int nftnl_parse_devs(
struct nftnl_str_array *sa,
const struct nlattr *nest)
47 mnl_attr_for_each_nested(attr, nest) {
48 switch(mnl_attr_get_type(attr)) {
51 case NFTA_DEVICE_NAME:
52 case NFTA_DEVICE_PREFIX:
57 nftnl_str_array_clear(sa);
58 sa->array = calloc(len + 1,
sizeof(
char *));
62 mnl_attr_for_each_nested(attr, nest) {
63 sa->array[sa->len] = nftnl_attr_get_ifname(attr);
64 if (!sa->array[sa->len]) {
65 nftnl_str_array_clear(sa);