]> granicus.if.org Git - ipset/commitdiff
ipset: fix the Netlink sequence number
authorHolger Eitzenberger <holger@eitzenberger.org>
Mon, 24 Jan 2011 21:36:33 +0000 (22:36 +0100)
committerJozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Tue, 25 Jan 2011 20:12:28 +0000 (21:12 +0100)
Do not use time() as a Netlink sequence number for each message,
as otherwise the same seq number will be used when sending
another message in the same second.  Instead use time() just for
initialization, then increment per message.

Signed-off-by: Holger Eitzenberger <holger@eitzenberger.org>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
lib/mnl.c

index 683dba2218b33159e6f0f6d64e4ab3f12b7dafae..77e4faa88c5b9c86b5ae82c64f84f834f77bbe2a 100644 (file)
--- a/lib/mnl.c
+++ b/lib/mnl.c
@@ -75,7 +75,7 @@ ipset_mnl_fill_hdr(struct ipset_handle *handle, enum ipset_cmd cmd,
        nlh->nlmsg_flags = cmdflags[cmd - 1];
        if (envflags & IPSET_ENV_EXIST)
                nlh->nlmsg_flags &=  ~NLM_F_EXCL;
-       nlh->nlmsg_seq = handle->seq = time(NULL);
+       nlh->nlmsg_seq = ++handle->seq;
 
        nfg = mnl_nlmsg_put_extra_header(nlh, sizeof(struct nfgenmsg));
        nfg->nfgen_family = AF_INET;
@@ -135,6 +135,7 @@ ipset_mnl_init(mnl_cb_t *cb_ctl, void *data)
        handle->portid = mnl_socket_get_portid(handle->h);
        handle->cb_ctl = cb_ctl;
        handle->data = data;
+       handle->seq = time(NULL);
        
        return handle;