From 49f29c7dfebebb24560a26cfb82a4d76fcf9426f Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Thu, 16 Feb 2017 14:27:45 +0100 Subject: common: get rid of nftnl_batch_build_hdr() Add __nftnl_nlmsg_build_hdr() so nftnl_batch_build_hdr() and nftnl_nlmsg_build_hdr() share the same code. Signed-off-by: Pablo Neira Ayuso --- src/common.c | 41 ++++++++++++++++++----------------------- 1 file changed, 18 insertions(+), 23 deletions(-) (limited to 'src') diff --git a/src/common.c b/src/common.c index 8b001fe..0f23785 100644 --- a/src/common.c +++ b/src/common.c @@ -22,24 +22,33 @@ #include #include "internal.h" -struct nlmsghdr *nftnl_nlmsg_build_hdr(char *buf, uint16_t cmd, uint16_t family, - uint16_t type, uint32_t seq) +static struct nlmsghdr *__nftnl_nlmsg_build_hdr(char *buf, uint16_t type, + uint16_t family, + uint16_t flags, uint32_t seq, + uint16_t res_id) { struct nlmsghdr *nlh; struct nfgenmsg *nfh; nlh = mnl_nlmsg_put_header(buf); - nlh->nlmsg_type = (NFNL_SUBSYS_NFTABLES << 8) | cmd; - nlh->nlmsg_flags = NLM_F_REQUEST | type; + nlh->nlmsg_type = type; + nlh->nlmsg_flags = NLM_F_REQUEST | flags; nlh->nlmsg_seq = seq; nfh = mnl_nlmsg_put_extra_header(nlh, sizeof(struct nfgenmsg)); nfh->nfgen_family = family; nfh->version = NFNETLINK_V0; - nfh->res_id = 0; + nfh->res_id = res_id; return nlh; } + +struct nlmsghdr *nftnl_nlmsg_build_hdr(char *buf, uint16_t type, uint16_t family, + uint16_t flags, uint32_t seq) +{ + return __nftnl_nlmsg_build_hdr(buf, (NFNL_SUBSYS_NFTABLES << 8) | type, + family, flags, seq, 0); +} EXPORT_SYMBOL(nftnl_nlmsg_build_hdr); struct nftnl_parse_err *nftnl_parse_err_alloc(void) @@ -156,31 +165,17 @@ int nftnl_cmd_footer_fprintf(FILE *fp, uint32_t cmd, uint32_t type, nftnl_cmd_footer_fprintf_cb); } -static void nftnl_batch_build_hdr(char *buf, uint16_t type, uint32_t seq) -{ - struct nlmsghdr *nlh; - struct nfgenmsg *nfg; - - nlh = mnl_nlmsg_put_header(buf); - nlh->nlmsg_type = type; - nlh->nlmsg_flags = NLM_F_REQUEST; - nlh->nlmsg_seq = seq; - - nfg = mnl_nlmsg_put_extra_header(nlh, sizeof(*nfg)); - nfg->nfgen_family = AF_UNSPEC; - nfg->version = NFNETLINK_V0; - nfg->res_id = NFNL_SUBSYS_NFTABLES; -} - void nftnl_batch_begin(char *buf, uint32_t seq) { - nftnl_batch_build_hdr(buf, NFNL_MSG_BATCH_BEGIN, seq); + __nftnl_nlmsg_build_hdr(buf, NFNL_MSG_BATCH_BEGIN, AF_UNSPEC, 0, seq, + NFNL_SUBSYS_NFTABLES); } EXPORT_SYMBOL(nftnl_batch_begin); void nftnl_batch_end(char *buf, uint32_t seq) { - nftnl_batch_build_hdr(buf, NFNL_MSG_BATCH_END, seq); + __nftnl_nlmsg_build_hdr(buf, NFNL_MSG_BATCH_END, AF_UNSPEC, 0, seq, + NFNL_SUBSYS_NFTABLES); } EXPORT_SYMBOL(nftnl_batch_end); -- cgit v1.2.3