]> git.ipfire.org Git - thirdparty/libnftnl.git/commitdiff
common: get rid of nftnl_batch_build_hdr()
authorPablo Neira Ayuso <pablo@netfilter.org>
Thu, 16 Feb 2017 13:27:45 +0000 (14:27 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Thu, 16 Feb 2017 13:27:45 +0000 (14:27 +0100)
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 <pablo@netfilter.org>
include/libnftnl/common.h
src/common.c

index b9c6ff3e2e545658143a5408fc25d8ed1c151f03..f67f1866560fc7168f312d637fd0c67abb428da4 100644 (file)
@@ -41,8 +41,8 @@ enum nftnl_parse_type {
 
 struct nftnl_parse_err;
 
-struct nlmsghdr *nftnl_nlmsg_build_hdr(char *buf, uint16_t cmd, uint16_t family,
-                                    uint16_t type, uint32_t seq);
+struct nlmsghdr *nftnl_nlmsg_build_hdr(char *buf, uint16_t type, uint16_t family,
+                                      uint16_t flags, uint32_t seq);
 
 struct nftnl_parse_err *nftnl_parse_err_alloc(void);
 void nftnl_parse_err_free(struct nftnl_parse_err *);
index 8b001fe8da971fa567ace7c46f508b30f1f3e628..0f23785e05d307d9b3cdfb610e1092f6cac6713b 100644 (file)
 #include <errno.h>
 #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);