diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2008-10-13 13:30:44 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2008-10-13 13:30:44 +0200 |
commit | 6dd45b13115d77860a8e3b37caa1560cbcfd265c (patch) | |
tree | 40134abc6459484107d77751bbcf1562ce98dea3 /src/conntrack/parse.c | |
parent | fb92f85dcc664ad94c1d2919b729086eee774893 (diff) |
helper: explicit helper assignation supportlibnetfilter_conntrack-0.0.97
This patch adds support for explicit helper assignation. This support
will not be of any help without the appropriate kernel support that will
go into the Linux kernel 2.6.29 -sic-.
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/conntrack/parse.c')
-rw-r--r-- | src/conntrack/parse.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/conntrack/parse.c b/src/conntrack/parse.c index 11cf5ff..d453bc6 100644 --- a/src/conntrack/parse.c +++ b/src/conntrack/parse.c @@ -356,6 +356,22 @@ __parse_nat_seq(const struct nfattr *attr, struct nf_conntrack *ct, int dir) } } +static void +__parse_helper(const struct nfattr *attr, struct nf_conntrack *ct) +{ + struct nfattr *tb[CTA_HELP_MAX]; + + nfnl_parse_nested(tb, CTA_HELP_MAX, attr); + if (!tb[CTA_HELP_NAME-1]) + return; + + strncpy(ct->helper_name, + NFA_DATA(tb[CTA_HELP_NAME-1]), + __NFCT_HELPER_NAMELEN); + ct->helper_name[__NFCT_HELPER_NAMELEN-1] = '\0'; + set_bit(ATTR_HELPER_NAME, ct->set); +} + int __parse_message_type(const struct nlmsghdr *nlh) { u_int16_t type = NFNL_MSG_TYPE(nlh->nlmsg_type); @@ -447,4 +463,7 @@ void __parse_conntrack(const struct nlmsghdr *nlh, ct->id = ntohl(*(u_int32_t *)NFA_DATA(cda[CTA_ID-1])); set_bit(ATTR_ID, ct->set); } + + if (cda[CTA_HELP-1]) + __parse_helper(cda[CTA_HELP-1], ct); } |