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 15int 16nfexp_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