]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
src: early allocation of the set ID
authorPablo Neira Ayuso <pablo@netfilter.org>
Sat, 27 Jun 2015 21:36:20 +0000 (23:36 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Mon, 17 Aug 2015 23:13:35 +0000 (01:13 +0200)
By when the set is created, so element in the batch use this set ID as
reference.

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

index cff934469bb0d7b5fd143ebfac612485e556b352..801696c80bdfcad4fe610e76624e776b74b2a67d 100644 (file)
@@ -1128,9 +1128,6 @@ static int netlink_add_set_compat(struct netlink_ctx *ctx,
        return err;
 }
 
-/* internal ID to uniquely identify a set in the batch */
-static uint32_t set_id;
-
 static int netlink_add_set_batch(struct netlink_ctx *ctx,
                                 const struct handle *h, struct set *set)
 {
@@ -1154,7 +1151,6 @@ static int netlink_add_set_batch(struct netlink_ctx *ctx,
        if (set->gc_int)
                nft_set_attr_set_u32(nls, NFT_SET_ATTR_GC_INTERVAL, set->gc_int);
 
-       set->handle.set_id = ++set_id;
        nft_set_attr_set_u32(nls, NFT_SET_ATTR_ID, set->handle.set_id);
 
        if (!(set->flags & (SET_F_CONSTANT))) {
index 741654bd3cd010ac3edca0ba391debcb752b8688..6e1b823a12994624292f2151e79c6de6842baf73 100644 (file)
@@ -139,12 +139,16 @@ void cache_release(void)
        cache_initialized = false;
 }
 
+/* internal ID to uniquely identify a set in the batch */
+static uint32_t set_id;
+
 struct set *set_alloc(const struct location *loc)
 {
        struct set *set;
 
        set = xzalloc(sizeof(*set));
        set->refcnt = 1;
+       set->handle.set_id = ++set_id;
        if (loc != NULL)
                set->location = *loc;
        return set;