summaryrefslogtreecommitdiffstats
path: root/src/netlink.c
diff options
context:
space:
mode:
authorPhil Sutter <phil@nwl.cc>2019-04-25 14:56:54 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2019-05-03 20:02:45 +0200
commit10da57e36147bf5c73cd2820e11ec124ecfffc83 (patch)
treebc92463a0dcdd81a0b82acd8914b43abcc67ab7d /src/netlink.c
parent92591aa0da84821238107f2f1515a57cbbd2cf6a (diff)
src: use UDATA defines from libnftnl
Userdata attribute names have been added to libnftnl, use them instead of the local copy. While being at it, rename udata_get_comment() in netlink_delinearize.c and the callback it uses since the function is specific to rules. Also integrate the existence check for NFTNL_RULE_USERDATA into it along with the call to nftnl_rule_get_data(). Signed-off-by: Phil Sutter <phil@nwl.cc> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/netlink.c')
-rw-r--r--src/netlink.c45
1 files changed, 23 insertions, 22 deletions
diff --git a/src/netlink.c b/src/netlink.c
index 9e0e07d4..c051ae6c 100644
--- a/src/netlink.c
+++ b/src/netlink.c
@@ -128,12 +128,12 @@ static struct nftnl_set_elem *alloc_nftnl_setelem(const struct expr *set,
memory_allocation_error();
}
if (elem->comment) {
- if (!nftnl_udata_put_strz(udbuf, UDATA_SET_ELEM_COMMENT,
+ if (!nftnl_udata_put_strz(udbuf, NFTNL_UDATA_SET_ELEM_COMMENT,
elem->comment))
memory_allocation_error();
}
if (expr->elem_flags) {
- if (!nftnl_udata_put_u32(udbuf, UDATA_SET_ELEM_FLAGS,
+ if (!nftnl_udata_put_u32(udbuf, NFTNL_UDATA_SET_ELEM_FLAGS,
expr->elem_flags))
memory_allocation_error();
}
@@ -522,9 +522,9 @@ static int set_parse_udata_cb(const struct nftnl_udata *attr, void *data)
uint8_t len = nftnl_udata_len(attr);
switch (type) {
- case UDATA_SET_KEYBYTEORDER:
- case UDATA_SET_DATABYTEORDER:
- case UDATA_SET_MERGE_ELEMENTS:
+ case NFTNL_UDATA_SET_KEYBYTEORDER:
+ case NFTNL_UDATA_SET_DATABYTEORDER:
+ case NFTNL_UDATA_SET_MERGE_ELEMENTS:
if (len != sizeof(uint32_t))
return -1;
break;
@@ -538,7 +538,7 @@ static int set_parse_udata_cb(const struct nftnl_udata *attr, void *data)
struct set *netlink_delinearize_set(struct netlink_ctx *ctx,
const struct nftnl_set *nls)
{
- const struct nftnl_udata *ud[UDATA_SET_MAX + 1] = {};
+ const struct nftnl_udata *ud[NFTNL_UDATA_SET_MAX + 1] = {};
uint32_t flags, key, data, data_len, objtype = 0;
enum byteorder keybyteorder = BYTEORDER_INVALID;
enum byteorder databyteorder = BYTEORDER_INVALID;
@@ -555,15 +555,15 @@ struct set *netlink_delinearize_set(struct netlink_ctx *ctx,
return NULL;
}
- if (ud[UDATA_SET_KEYBYTEORDER])
- keybyteorder =
- nftnl_udata_get_u32(ud[UDATA_SET_KEYBYTEORDER]);
- if (ud[UDATA_SET_DATABYTEORDER])
- databyteorder =
- nftnl_udata_get_u32(ud[UDATA_SET_DATABYTEORDER]);
- if (ud[UDATA_SET_MERGE_ELEMENTS])
- automerge =
- nftnl_udata_get_u32(ud[UDATA_SET_MERGE_ELEMENTS]);
+#define GET_U32_UDATA(var, attr) \
+ if (ud[attr]) \
+ var = nftnl_udata_get_u32(ud[attr])
+
+ GET_U32_UDATA(keybyteorder, NFTNL_UDATA_SET_KEYBYTEORDER);
+ GET_U32_UDATA(databyteorder, NFTNL_UDATA_SET_DATABYTEORDER);
+ GET_U32_UDATA(automerge, NFTNL_UDATA_SET_MERGE_ELEMENTS);
+
+#undef GET_U32_UDATA
}
key = nftnl_set_get_u32(nls, NFTNL_SET_KEY_TYPE);
@@ -712,11 +712,11 @@ static int set_elem_parse_udata_cb(const struct nftnl_udata *attr, void *data)
uint8_t len = nftnl_udata_len(attr);
switch (type) {
- case UDATA_SET_ELEM_COMMENT:
+ case NFTNL_UDATA_SET_ELEM_COMMENT:
if (value[len - 1] != '\0')
return -1;
break;
- case UDATA_SET_ELEM_FLAGS:
+ case NFTNL_UDATA_SET_ELEM_FLAGS:
if (len != sizeof(uint32_t))
return -1;
break;
@@ -730,7 +730,7 @@ static int set_elem_parse_udata_cb(const struct nftnl_udata *attr, void *data)
static void set_elem_parse_udata(struct nftnl_set_elem *nlse,
struct expr *expr)
{
- const struct nftnl_udata *ud[UDATA_SET_ELEM_MAX + 1] = {};
+ const struct nftnl_udata *ud[NFTNL_UDATA_SET_ELEM_MAX + 1] = {};
const void *data;
uint32_t len;
@@ -738,11 +738,12 @@ static void set_elem_parse_udata(struct nftnl_set_elem *nlse,
if (nftnl_udata_parse(data, len, set_elem_parse_udata_cb, ud))
return;
- if (ud[UDATA_SET_ELEM_COMMENT])
+ if (ud[NFTNL_UDATA_SET_ELEM_COMMENT])
expr->comment =
- xstrdup(nftnl_udata_get(ud[UDATA_SET_ELEM_COMMENT]));
- if (ud[UDATA_SET_ELEM_FLAGS])
- expr->elem_flags = nftnl_udata_get_u32(ud[UDATA_SET_ELEM_FLAGS]);
+ xstrdup(nftnl_udata_get(ud[NFTNL_UDATA_SET_ELEM_COMMENT]));
+ if (ud[NFTNL_UDATA_SET_ELEM_FLAGS])
+ expr->elem_flags =
+ nftnl_udata_get_u32(ud[NFTNL_UDATA_SET_ELEM_FLAGS]);
}
int netlink_delinearize_setelem(struct nftnl_set_elem *nlse,