1 /*
2 * (C) 2005-2012 by Pablo Neira Ayuso <pablo@netfilter.org>
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This code has been sponsored by Vyatta Inc. <http://www.vyatta.com>
10 */
11
12 #include "internal/internal.h"
13 #include <libmnl/libmnl.h>
14
15 int
nfexp_nlmsg_build(struct nlmsghdr * nlh,const struct nf_expect * exp)16 nfexp_nlmsg_build(struct nlmsghdr *nlh, const struct nf_expect *exp)
17 {
18 if (test_bit(ATTR_EXP_EXPECTED, exp->set))
19 nfct_build_tuple(nlh, &exp->expected.orig, CTA_EXPECT_TUPLE);
20
21 if (test_bit(ATTR_EXP_MASTER, exp->set))
22 nfct_build_tuple(nlh, &exp->master.orig, CTA_EXPECT_MASTER);
23
24 if (test_bit(ATTR_EXP_MASK, exp->set))
25 nfct_build_tuple(nlh, &exp->mask.orig, CTA_EXPECT_MASK);
26
27 if (test_bit(ATTR_EXP_TIMEOUT, exp->set))
28 mnl_attr_put_u32(nlh, CTA_EXPECT_TIMEOUT, htonl(exp->timeout));
29
30 if (test_bit(ATTR_EXP_FLAGS, exp->set))
31 mnl_attr_put_u32(nlh, CTA_EXPECT_FLAGS, htonl(exp->flags));
32
33 if (test_bit(ATTR_EXP_ZONE, exp->set))
34 mnl_attr_put_u16(nlh, CTA_EXPECT_ZONE, htons(exp->zone));
35
36 if (test_bit(ATTR_EXP_HELPER_NAME, exp->set))
37 mnl_attr_put_strz(nlh, CTA_EXPECT_HELP_NAME, exp->helper_name);
38
39 return 0;
40 }
41