diff options
Diffstat (limited to 'src/common.c')
-rw-r--r-- | src/common.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/common.c b/src/common.c new file mode 100644 index 0000000..f03e730 --- /dev/null +++ b/src/common.c @@ -0,0 +1,36 @@ +/* + * (C) 2012-2013 by Pablo Neira Ayuso <pablo@netfilter.org> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published + * by the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + */ + +#include <linux/netlink.h> +#include <linux/netfilter/nfnetlink.h> + +#include <libmnl/libmnl.h> +#include <libnftables/common.h> + +#include "internal.h" + +struct nlmsghdr *nft_nlmsg_build_hdr(char *buf, uint16_t cmd, uint16_t family, + uint16_t type, uint32_t seq) +{ + 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_seq = seq; + + nfh = mnl_nlmsg_put_extra_header(nlh, sizeof(struct nfgenmsg)); + nfh->nfgen_family = family; + nfh->version = NFNETLINK_V0; + nfh->res_id = 0; + + return nlh; +} +EXPORT_SYMBOL(nft_nlmsg_build_hdr); |