diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2014-02-03 19:54:07 +0100 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2014-02-03 19:54:07 +0100 |
commit | f40b3a476f14730fd6ced4ddf29bb1c8319c1f6b (patch) | |
tree | 2daff8e91d709148ae0baa50ff2664c5061bef90 /src | |
parent | ebd70e51e9bf33a46705a6a1db649bed7724c0b1 (diff) | |
parent | 35f689ec8726dc262834d1906609bab85cebf976 (diff) |
Merge branch 'master' into next-3.14
Diffstat (limited to 'src')
-rw-r--r-- | src/mnl.c | 10 |
1 files changed, 10 insertions, 0 deletions
@@ -21,6 +21,7 @@ #include <linux/netfilter/nf_tables.h> #include <mnl.h> +#include <string.h> #include <errno.h> #include <utils.h> #include <nftables.h> @@ -100,12 +101,21 @@ struct batch_page { static void mnl_batch_page_add(void) { struct batch_page *batch_page; + struct nlmsghdr *last_nlh; + + /* Get the last message not fitting in the batch */ + last_nlh = mnl_nlmsg_batch_current(batch); batch_page = xmalloc(sizeof(struct batch_page)); batch_page->batch = batch; list_add_tail(&batch_page->head, &batch_page_list); batch_num_pages++; batch = mnl_batch_alloc(); + + /* Copy the last message not fitting to the new batch page */ + memcpy(mnl_nlmsg_batch_current(batch), last_nlh, last_nlh->nlmsg_len); + /* No overflow may happen as this is a new empty batch page */ + mnl_nlmsg_batch_next(batch); } static uint32_t mnl_batch_put(int type) |