summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/network.h1
-rw-r--r--src/build.c2
-rw-r--r--src/parse.c5
3 files changed, 8 insertions, 0 deletions
diff --git a/include/network.h b/include/network.h
index 225ef0e..41c35af 100644
--- a/include/network.h
+++ b/include/network.h
@@ -276,6 +276,7 @@ enum nta_exp_attr {
NTA_EXP_NAT_L4PROTO, /* uint8_t */
NTA_EXP_NAT_DIR, /* uint32_t */
NTA_EXP_HELPER_NAME, /* string (variable length) */
+ NTA_EXP_FN, /* string (variable length) */
NTA_EXP_MAX
};
diff --git a/src/build.c b/src/build.c
index a2901b1..7d4ef12 100644
--- a/src/build.c
+++ b/src/build.c
@@ -357,4 +357,6 @@ void exp2msg(const struct nf_expect *exp, struct nethdr *n)
exp_build_u32(exp, ATTR_EXP_NAT_DIR, n, NTA_EXP_NAT_DIR);
}
exp_build_str(exp, ATTR_EXP_HELPER_NAME, n, NTA_EXP_HELPER_NAME);
+ if (nfexp_attr_is_set(exp, ATTR_EXP_FN))
+ exp_build_str(exp, ATTR_EXP_FN, n, NTA_EXP_FN);
}
diff --git a/src/parse.c b/src/parse.c
index ceb9e26..6695cc8 100644
--- a/src/parse.c
+++ b/src/parse.c
@@ -393,6 +393,11 @@ static struct exp_parser {
.exp_attr = ATTR_EXP_HELPER_NAME,
.max_size = NFCT_HELPER_NAME_MAX,
},
+ [NTA_EXP_FN] = {
+ .parse = exp_parse_str,
+ .exp_attr = ATTR_EXP_FN,
+ .max_size = NFCT_HELPER_NAME_MAX,
+ },
};
static void exp_parse_ct_group(void *ct, int attr, void *data)