diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2008-11-18 11:54:05 +0100 |
---|---|---|
committer | Patrick McHardy <kaber@trash.net> | 2008-11-18 11:54:05 +0100 |
commit | 226c0c0ef2abdf91b8d9cce1aaf7d4635a5e5926 (patch) | |
tree | c1f5504d7942f0514ad38430668c8a7add4b7576 /include | |
parent | 4dc06f9633444f426ef9960c53426f2d2ded64ac (diff) | |
download | op-kernel-dev-226c0c0ef2abdf91b8d9cce1aaf7d4635a5e5926.zip op-kernel-dev-226c0c0ef2abdf91b8d9cce1aaf7d4635a5e5926.tar.gz |
netfilter: ctnetlink: helper modules load-on-demand support
This patch adds module loading for helpers via ctnetlink.
* Creation path: We support explicit and implicit helper assignation. For
the explicit case, we try to load the module. If the module is correctly
loaded and the helper is present, we return EAGAIN to re-start the
creation. Otherwise, we return EOPNOTSUPP.
* Update path: release the spin lock, load the module and check. If it is
present, then return EAGAIN to re-start the update.
This patch provides a refactorized function to lookup-and-set the
connection tracking helper. The function removes the exported symbol
__nf_ct_helper_find as it has not clients anymore.
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Diffstat (limited to 'include')
-rw-r--r-- | include/net/netfilter/nf_conntrack_helper.h | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/include/net/netfilter/nf_conntrack_helper.h b/include/net/netfilter/nf_conntrack_helper.h index f8060ab..66d65a7 100644 --- a/include/net/netfilter/nf_conntrack_helper.h +++ b/include/net/netfilter/nf_conntrack_helper.h @@ -39,9 +39,6 @@ struct nf_conntrack_helper }; extern struct nf_conntrack_helper * -__nf_ct_helper_find(const struct nf_conntrack_tuple *tuple); - -extern struct nf_conntrack_helper * __nf_conntrack_helper_find_byname(const char *name); extern int nf_conntrack_helper_register(struct nf_conntrack_helper *); @@ -49,6 +46,8 @@ extern void nf_conntrack_helper_unregister(struct nf_conntrack_helper *); extern struct nf_conn_help *nf_ct_helper_ext_add(struct nf_conn *ct, gfp_t gfp); +extern int __nf_ct_try_assign_helper(struct nf_conn *ct, gfp_t flags); + static inline struct nf_conn_help *nfct_help(const struct nf_conn *ct) { return nf_ct_ext_find(ct, NF_CT_EXT_HELPER); |