On Tue, Feb 04, 2020 at 01:00:03PM +1100, Duncan Roe wrote: > Signed-off-by: Duncan Roe <duncan_roe@xxxxxxxxxxxxxxx> > --- > examples/nf-queue.c | 15 ------------- > include/libnetfilter_queue/libnetfilter_queue.h | 1 + > src/nlmsg.c | 28 ++++++++++++++++++++++--- > 3 files changed, 26 insertions(+), 18 deletions(-) > > diff --git a/examples/nf-queue.c b/examples/nf-queue.c > index 960e244..112c3bf 100644 > --- a/examples/nf-queue.c > +++ b/examples/nf-queue.c > @@ -20,21 +20,6 @@ > > static struct mnl_socket *nl; > > -static struct nlmsghdr * > -nfq_hdr_put(char *buf, int type, uint32_t queue_num) > -{ > - struct nlmsghdr *nlh = mnl_nlmsg_put_header(buf); > - nlh->nlmsg_type = (NFNL_SUBSYS_QUEUE << 8) | type; > - nlh->nlmsg_flags = NLM_F_REQUEST; > - > - struct nfgenmsg *nfg = mnl_nlmsg_put_extra_header(nlh, sizeof(*nfg)); > - nfg->nfgen_family = AF_UNSPEC; > - nfg->version = NFNETLINK_V0; > - nfg->res_id = htons(queue_num); > - > - return nlh; > -} > - > static void > nfq_send_verdict(int queue_num, uint32_t id) > { > diff --git a/include/libnetfilter_queue/libnetfilter_queue.h b/include/libnetfilter_queue/libnetfilter_queue.h > index 092c57d..3372099 100644 > --- a/include/libnetfilter_queue/libnetfilter_queue.h > +++ b/include/libnetfilter_queue/libnetfilter_queue.h > @@ -149,6 +149,7 @@ void nfq_nlmsg_verdict_put_mark(struct nlmsghdr *nlh, uint32_t mark); > void nfq_nlmsg_verdict_put_pkt(struct nlmsghdr *nlh, const void *pkt, uint32_t pktlen); > > int nfq_nlmsg_parse(const struct nlmsghdr *nlh, struct nlattr **attr); > +struct nlmsghdr *nfq_hdr_put(char *buf, int type, uint32_t queue_num); > > #ifdef __cplusplus > } /* extern "C" */ > diff --git a/src/nlmsg.c b/src/nlmsg.c > index 4f09bf6..f4123f3 100644 > --- a/src/nlmsg.c > +++ b/src/nlmsg.c > @@ -261,9 +261,9 @@ static int nfq_pkt_parse_attr_cb(const struct nlattr *attr, void *data) > > /** > * nfq_nlmsg_parse - set packet attributes from netlink message > - * \param nlh netlink message that you want to read. > - * \param attr pointer to array of attributes to set. > - * \returns MNL_CB_OK on success or MNL_CB_ERROR if any error occurs. > + * \param nlh Pointer to netlink message > + * \param attr Pointer to array of attributes to set > + * \returns MNL_CB_OK on success or MNL_CB_ERROR if any error occurs > */ > EXPORT_SYMBOL > int nfq_nlmsg_parse(const struct nlmsghdr *nlh, struct nlattr **attr) > @@ -272,6 +272,28 @@ int nfq_nlmsg_parse(const struct nlmsghdr *nlh, struct nlattr **attr) > nfq_pkt_parse_attr_cb, attr); > } > > +/** > + * nfq_hdr_put - Convert memory buffer into a Netlink buffer Looks good. Just one small change: I'd suggest you rename this to nfq_nlmsg_put. Thanks.