summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJozsef Kadlecsik <kadlec@blackhole.kfki.hu>2017-09-19 21:43:29 +0200
committerJozsef Kadlecsik <kadlec@blackhole.kfki.hu>2017-09-23 13:03:55 +0200
commit6728c0b2c9c372cc821c3f03736c0ad89a44ef50 (patch)
treeeb9f6f45918a9487cf2527390423c8c76904da9f
parenta35e725a279c3de81a1cac785040216ef89ce792 (diff)
Handle padding attribute properly in userspace.
-rw-r--r--lib/debug.c3
-rw-r--r--lib/session.c6
2 files changed, 9 insertions, 0 deletions
diff --git a/lib/debug.c b/lib/debug.c
index 6f831ec..44d0f04 100644
--- a/lib/debug.c
+++ b/lib/debug.c
@@ -87,6 +87,9 @@ debug_cadt_attrs(int max, const struct ipset_attr_policy *policy,
if (!nla[i])
continue;
switch (policy[i].type) {
+ case MNL_TYPE_UNSPEC:
+ fprintf(stderr,"\t\tpadding\n");
+ break;
case MNL_TYPE_U8:
v = *(uint8_t *) mnl_attr_get_payload(nla[i]);
fprintf(stderr, "\t\t%s: %u\n",
diff --git a/lib/session.c b/lib/session.c
index 1bdaaa7..403ed23 100644
--- a/lib/session.c
+++ b/lib/session.c
@@ -514,6 +514,10 @@ static const struct ipset_attr_policy adt_attrs[] = {
.type = MNL_TYPE_U16,
.opt = IPSET_OPT_SKBQUEUE,
},
+ [IPSET_ATTR_PAD] = {
+ .type = MNL_TYPE_UNSPEC,
+ .len = 0,
+ },
};
static const struct ipset_attr_policy ipaddr_attrs[] = {
@@ -593,6 +597,8 @@ attr2data(struct ipset_session *session, struct nlattr *nla[],
attr = &attrs[type];
d = mnl_attr_get_payload(nla[type]);
+ if (attr->type == MNL_TYPE_UNSPEC)
+ return 0;
if (attr->type == MNL_TYPE_NESTED && attr->opt) {
/* IP addresses */
struct nlattr *ipattr[IPSET_ATTR_IPADDR_MAX+1] = {};