]> git.ipfire.org Git - thirdparty/libnftnl.git/commitdiff
expr: numgen: add missing nftnl_expr_ng_cmp()
authorPablo Neira Ayuso <pablo@netfilter.org>
Tue, 30 Aug 2016 14:15:46 +0000 (16:15 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Tue, 30 Aug 2016 14:15:55 +0000 (16:15 +0200)
This patch adds the missing comparator interface, most likely due to
race between the patchset that has added this and the introduction of
numgen.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/expr/numgen.c

index e8fa9a156a8607ba587d312a70119e830a27cbdc..0669eda921c76427f39ea7f7cd7c35eefc8bcaac 100644 (file)
@@ -238,10 +238,28 @@ nftnl_expr_ng_snprintf(char *buf, size_t len, uint32_t type,
        return -1;
 }
 
+static bool nftnl_expr_ng_cmp(const struct nftnl_expr *e1,
+                             const struct nftnl_expr *e2)
+{
+       struct nftnl_expr_ng *n1 = nftnl_expr_data(e1);
+       struct nftnl_expr_ng *n2 = nftnl_expr_data(e2);
+       bool eq = true;
+
+       if (e1->flags & (1 << NFTNL_EXPR_NG_DREG))
+               eq &= (n1->dreg == n2->dreg);
+       if (e1->flags & (1 << NFTNL_EXPR_NG_UNTIL))
+               eq &= (n1->until == n2->until);
+       if (e1->flags & (1 << NFTNL_EXPR_NG_TYPE))
+               eq &= (n1->type == n2->type);
+
+       return eq;
+}
+
 struct expr_ops expr_ops_ng = {
        .name           = "numgen",
        .alloc_len      = sizeof(struct nftnl_expr_ng),
        .max_attr       = NFTA_NG_MAX,
+       .cmp            = nftnl_expr_ng_cmp,
        .set            = nftnl_expr_ng_set,
        .get            = nftnl_expr_ng_get,
        .parse          = nftnl_expr_ng_parse,