提交 13b18339 编写于 作者: P Patrick McHardy 提交者: David S. Miller

[NETFILTER]: nf_conntrack: EXPORT_SYMBOL cleanup

- move EXPORT_SYMBOL next to exported symbol
- use EXPORT_SYMBOL_GPL since this is what the original code used
Signed-off-by: NPatrick McHardy <kaber@trash.net>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 a3c47977
...@@ -112,6 +112,8 @@ ipv4_prepare(struct sk_buff **pskb, unsigned int hooknum, unsigned int *dataoff, ...@@ -112,6 +112,8 @@ ipv4_prepare(struct sk_buff **pskb, unsigned int hooknum, unsigned int *dataoff,
} }
int nf_nat_module_is_loaded = 0; int nf_nat_module_is_loaded = 0;
EXPORT_SYMBOL_GPL(nf_nat_module_is_loaded);
static u_int32_t ipv4_get_features(const struct nf_conntrack_tuple *tuple) static u_int32_t ipv4_get_features(const struct nf_conntrack_tuple *tuple)
{ {
if (nf_nat_module_is_loaded) if (nf_nat_module_is_loaded)
...@@ -530,8 +532,3 @@ static void __exit nf_conntrack_l3proto_ipv4_fini(void) ...@@ -530,8 +532,3 @@ static void __exit nf_conntrack_l3proto_ipv4_fini(void)
module_init(nf_conntrack_l3proto_ipv4_init); module_init(nf_conntrack_l3proto_ipv4_init);
module_exit(nf_conntrack_l3proto_ipv4_fini); module_exit(nf_conntrack_l3proto_ipv4_fini);
EXPORT_SYMBOL(nf_ct_ipv4_gather_frags);
#ifdef CONFIG_NF_NAT_NEEDED
EXPORT_SYMBOL(nf_nat_module_is_loaded);
#endif
...@@ -380,5 +380,4 @@ struct nf_conntrack_l4proto nf_conntrack_l4proto_icmp = ...@@ -380,5 +380,4 @@ struct nf_conntrack_l4proto nf_conntrack_l4proto_icmp =
#endif #endif
#endif #endif
}; };
EXPORT_SYMBOL_GPL(nf_conntrack_l4proto_icmp);
EXPORT_SYMBOL(nf_conntrack_l4proto_icmp);
...@@ -63,17 +63,27 @@ ...@@ -63,17 +63,27 @@
#endif #endif
DEFINE_RWLOCK(nf_conntrack_lock); DEFINE_RWLOCK(nf_conntrack_lock);
EXPORT_SYMBOL_GPL(nf_conntrack_lock);
/* nf_conntrack_standalone needs this */ /* nf_conntrack_standalone needs this */
atomic_t nf_conntrack_count = ATOMIC_INIT(0); atomic_t nf_conntrack_count = ATOMIC_INIT(0);
EXPORT_SYMBOL_GPL(nf_conntrack_count); EXPORT_SYMBOL_GPL(nf_conntrack_count);
void (*nf_conntrack_destroyed)(struct nf_conn *conntrack) = NULL; void (*nf_conntrack_destroyed)(struct nf_conn *conntrack);
EXPORT_SYMBOL_GPL(nf_conntrack_destroyed);
unsigned int nf_conntrack_htable_size __read_mostly; unsigned int nf_conntrack_htable_size __read_mostly;
EXPORT_SYMBOL_GPL(nf_conntrack_htable_size);
int nf_conntrack_max __read_mostly; int nf_conntrack_max __read_mostly;
EXPORT_SYMBOL_GPL(nf_conntrack_max); EXPORT_SYMBOL_GPL(nf_conntrack_max);
struct list_head *nf_conntrack_hash __read_mostly; struct list_head *nf_conntrack_hash __read_mostly;
EXPORT_SYMBOL_GPL(nf_conntrack_hash);
struct nf_conn nf_conntrack_untracked __read_mostly; struct nf_conn nf_conntrack_untracked __read_mostly;
EXPORT_SYMBOL_GPL(nf_conntrack_untracked);
unsigned int nf_ct_log_invalid __read_mostly; unsigned int nf_ct_log_invalid __read_mostly;
LIST_HEAD(unconfirmed); LIST_HEAD(unconfirmed);
static int nf_conntrack_vmalloc __read_mostly; static int nf_conntrack_vmalloc __read_mostly;
...@@ -210,6 +220,7 @@ int nf_conntrack_register_cache(u_int32_t features, const char *name, ...@@ -210,6 +220,7 @@ int nf_conntrack_register_cache(u_int32_t features, const char *name,
mutex_unlock(&nf_ct_cache_mutex); mutex_unlock(&nf_ct_cache_mutex);
return ret; return ret;
} }
EXPORT_SYMBOL_GPL(nf_conntrack_register_cache);
/* FIXME: In the current, only nf_conntrack_cleanup() can call this function. */ /* FIXME: In the current, only nf_conntrack_cleanup() can call this function. */
void nf_conntrack_unregister_cache(u_int32_t features) void nf_conntrack_unregister_cache(u_int32_t features)
...@@ -244,6 +255,7 @@ void nf_conntrack_unregister_cache(u_int32_t features) ...@@ -244,6 +255,7 @@ void nf_conntrack_unregister_cache(u_int32_t features)
mutex_unlock(&nf_ct_cache_mutex); mutex_unlock(&nf_ct_cache_mutex);
} }
EXPORT_SYMBOL_GPL(nf_conntrack_unregister_cache);
int int
nf_ct_get_tuple(const struct sk_buff *skb, nf_ct_get_tuple(const struct sk_buff *skb,
...@@ -266,6 +278,7 @@ nf_ct_get_tuple(const struct sk_buff *skb, ...@@ -266,6 +278,7 @@ nf_ct_get_tuple(const struct sk_buff *skb,
return l4proto->pkt_to_tuple(skb, dataoff, tuple); return l4proto->pkt_to_tuple(skb, dataoff, tuple);
} }
EXPORT_SYMBOL_GPL(nf_ct_get_tuple);
int int
nf_ct_invert_tuple(struct nf_conntrack_tuple *inverse, nf_ct_invert_tuple(struct nf_conntrack_tuple *inverse,
...@@ -284,6 +297,7 @@ nf_ct_invert_tuple(struct nf_conntrack_tuple *inverse, ...@@ -284,6 +297,7 @@ nf_ct_invert_tuple(struct nf_conntrack_tuple *inverse,
inverse->dst.protonum = orig->dst.protonum; inverse->dst.protonum = orig->dst.protonum;
return l4proto->invert_tuple(inverse, orig); return l4proto->invert_tuple(inverse, orig);
} }
EXPORT_SYMBOL_GPL(nf_ct_invert_tuple);
static void static void
clean_from_lists(struct nf_conn *ct) clean_from_lists(struct nf_conn *ct)
...@@ -382,6 +396,7 @@ __nf_conntrack_find(const struct nf_conntrack_tuple *tuple, ...@@ -382,6 +396,7 @@ __nf_conntrack_find(const struct nf_conntrack_tuple *tuple,
return NULL; return NULL;
} }
EXPORT_SYMBOL_GPL(__nf_conntrack_find);
/* Find a connection corresponding to a tuple. */ /* Find a connection corresponding to a tuple. */
struct nf_conntrack_tuple_hash * struct nf_conntrack_tuple_hash *
...@@ -398,6 +413,7 @@ nf_conntrack_find_get(const struct nf_conntrack_tuple *tuple, ...@@ -398,6 +413,7 @@ nf_conntrack_find_get(const struct nf_conntrack_tuple *tuple,
return h; return h;
} }
EXPORT_SYMBOL_GPL(nf_conntrack_find_get);
static void __nf_conntrack_hash_insert(struct nf_conn *ct, static void __nf_conntrack_hash_insert(struct nf_conn *ct,
unsigned int hash, unsigned int hash,
...@@ -421,6 +437,7 @@ void nf_conntrack_hash_insert(struct nf_conn *ct) ...@@ -421,6 +437,7 @@ void nf_conntrack_hash_insert(struct nf_conn *ct)
__nf_conntrack_hash_insert(ct, hash, repl_hash); __nf_conntrack_hash_insert(ct, hash, repl_hash);
write_unlock_bh(&nf_conntrack_lock); write_unlock_bh(&nf_conntrack_lock);
} }
EXPORT_SYMBOL_GPL(nf_conntrack_hash_insert);
/* Confirm a connection given skb; places it in hash table */ /* Confirm a connection given skb; places it in hash table */
int int
...@@ -498,6 +515,7 @@ __nf_conntrack_confirm(struct sk_buff **pskb) ...@@ -498,6 +515,7 @@ __nf_conntrack_confirm(struct sk_buff **pskb)
write_unlock_bh(&nf_conntrack_lock); write_unlock_bh(&nf_conntrack_lock);
return NF_DROP; return NF_DROP;
} }
EXPORT_SYMBOL_GPL(__nf_conntrack_confirm);
/* Returns true if a connection correspondings to the tuple (required /* Returns true if a connection correspondings to the tuple (required
for NAT). */ for NAT). */
...@@ -513,6 +531,7 @@ nf_conntrack_tuple_taken(const struct nf_conntrack_tuple *tuple, ...@@ -513,6 +531,7 @@ nf_conntrack_tuple_taken(const struct nf_conntrack_tuple *tuple,
return h != NULL; return h != NULL;
} }
EXPORT_SYMBOL_GPL(nf_conntrack_tuple_taken);
/* There's a small race here where we may free a just-assured /* There's a small race here where we may free a just-assured
connection. Too bad: we're in trouble anyway. */ connection. Too bad: we're in trouble anyway. */
...@@ -631,6 +650,7 @@ struct nf_conn *nf_conntrack_alloc(const struct nf_conntrack_tuple *orig, ...@@ -631,6 +650,7 @@ struct nf_conn *nf_conntrack_alloc(const struct nf_conntrack_tuple *orig,
l3proto = __nf_ct_l3proto_find(orig->src.l3num); l3proto = __nf_ct_l3proto_find(orig->src.l3num);
return __nf_conntrack_alloc(orig, repl, l3proto, 0); return __nf_conntrack_alloc(orig, repl, l3proto, 0);
} }
EXPORT_SYMBOL_GPL(nf_conntrack_alloc);
void nf_conntrack_free(struct nf_conn *conntrack) void nf_conntrack_free(struct nf_conn *conntrack)
{ {
...@@ -641,6 +661,7 @@ void nf_conntrack_free(struct nf_conn *conntrack) ...@@ -641,6 +661,7 @@ void nf_conntrack_free(struct nf_conn *conntrack)
kmem_cache_free(nf_ct_cache[features].cachep, conntrack); kmem_cache_free(nf_ct_cache[features].cachep, conntrack);
atomic_dec(&nf_conntrack_count); atomic_dec(&nf_conntrack_count);
} }
EXPORT_SYMBOL_GPL(nf_conntrack_free);
/* Allocate a new conntrack: we return -ENOMEM if classification /* Allocate a new conntrack: we return -ENOMEM if classification
failed due to stress. Otherwise it really is unclassifiable. */ failed due to stress. Otherwise it really is unclassifiable. */
...@@ -845,6 +866,7 @@ nf_conntrack_in(int pf, unsigned int hooknum, struct sk_buff **pskb) ...@@ -845,6 +866,7 @@ nf_conntrack_in(int pf, unsigned int hooknum, struct sk_buff **pskb)
return ret; return ret;
} }
EXPORT_SYMBOL_GPL(nf_conntrack_in);
int nf_ct_invert_tuplepr(struct nf_conntrack_tuple *inverse, int nf_ct_invert_tuplepr(struct nf_conntrack_tuple *inverse,
const struct nf_conntrack_tuple *orig) const struct nf_conntrack_tuple *orig)
...@@ -854,6 +876,7 @@ int nf_ct_invert_tuplepr(struct nf_conntrack_tuple *inverse, ...@@ -854,6 +876,7 @@ int nf_ct_invert_tuplepr(struct nf_conntrack_tuple *inverse,
__nf_ct_l4proto_find(orig->src.l3num, __nf_ct_l4proto_find(orig->src.l3num,
orig->dst.protonum)); orig->dst.protonum));
} }
EXPORT_SYMBOL_GPL(nf_ct_invert_tuplepr);
/* Alter reply tuple (maybe alter helper). This is for NAT, and is /* Alter reply tuple (maybe alter helper). This is for NAT, and is
implicitly racy: see __nf_conntrack_confirm */ implicitly racy: see __nf_conntrack_confirm */
...@@ -874,6 +897,7 @@ void nf_conntrack_alter_reply(struct nf_conn *ct, ...@@ -874,6 +897,7 @@ void nf_conntrack_alter_reply(struct nf_conn *ct,
help->helper = __nf_ct_helper_find(newreply); help->helper = __nf_ct_helper_find(newreply);
write_unlock_bh(&nf_conntrack_lock); write_unlock_bh(&nf_conntrack_lock);
} }
EXPORT_SYMBOL_GPL(nf_conntrack_alter_reply);
/* Refresh conntrack for this many jiffies and do accounting if do_acct is 1 */ /* Refresh conntrack for this many jiffies and do accounting if do_acct is 1 */
void __nf_ct_refresh_acct(struct nf_conn *ct, void __nf_ct_refresh_acct(struct nf_conn *ct,
...@@ -931,6 +955,7 @@ void __nf_ct_refresh_acct(struct nf_conn *ct, ...@@ -931,6 +955,7 @@ void __nf_ct_refresh_acct(struct nf_conn *ct,
if (event) if (event)
nf_conntrack_event_cache(event, skb); nf_conntrack_event_cache(event, skb);
} }
EXPORT_SYMBOL_GPL(__nf_ct_refresh_acct);
#if defined(CONFIG_NF_CT_NETLINK) || \ #if defined(CONFIG_NF_CT_NETLINK) || \
defined(CONFIG_NF_CT_NETLINK_MODULE) defined(CONFIG_NF_CT_NETLINK_MODULE)
...@@ -955,6 +980,7 @@ int nf_ct_port_tuple_to_nfattr(struct sk_buff *skb, ...@@ -955,6 +980,7 @@ int nf_ct_port_tuple_to_nfattr(struct sk_buff *skb,
nfattr_failure: nfattr_failure:
return -1; return -1;
} }
EXPORT_SYMBOL_GPL(nf_ct_port_tuple_to_nfattr);
static const size_t cta_min_proto[CTA_PROTO_MAX] = { static const size_t cta_min_proto[CTA_PROTO_MAX] = {
[CTA_PROTO_SRC_PORT-1] = sizeof(u_int16_t), [CTA_PROTO_SRC_PORT-1] = sizeof(u_int16_t),
...@@ -975,6 +1001,7 @@ int nf_ct_port_nfattr_to_tuple(struct nfattr *tb[], ...@@ -975,6 +1001,7 @@ int nf_ct_port_nfattr_to_tuple(struct nfattr *tb[],
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(nf_ct_port_nfattr_to_tuple);
#endif #endif
/* Used by ipt_REJECT and ip6t_REJECT. */ /* Used by ipt_REJECT and ip6t_REJECT. */
...@@ -995,6 +1022,7 @@ void __nf_conntrack_attach(struct sk_buff *nskb, struct sk_buff *skb) ...@@ -995,6 +1022,7 @@ void __nf_conntrack_attach(struct sk_buff *nskb, struct sk_buff *skb)
nskb->nfctinfo = ctinfo; nskb->nfctinfo = ctinfo;
nf_conntrack_get(nskb->nfct); nf_conntrack_get(nskb->nfct);
} }
EXPORT_SYMBOL_GPL(__nf_conntrack_attach);
static inline int static inline int
do_iter(const struct nf_conntrack_tuple_hash *i, do_iter(const struct nf_conntrack_tuple_hash *i,
...@@ -1048,6 +1076,7 @@ nf_ct_iterate_cleanup(int (*iter)(struct nf_conn *i, void *data), void *data) ...@@ -1048,6 +1076,7 @@ nf_ct_iterate_cleanup(int (*iter)(struct nf_conn *i, void *data), void *data)
nf_ct_put(ct); nf_ct_put(ct);
} }
} }
EXPORT_SYMBOL_GPL(nf_ct_iterate_cleanup);
static int kill_all(struct nf_conn *i, void *data) static int kill_all(struct nf_conn *i, void *data)
{ {
...@@ -1067,6 +1096,7 @@ void nf_conntrack_flush() ...@@ -1067,6 +1096,7 @@ void nf_conntrack_flush()
{ {
nf_ct_iterate_cleanup(kill_all, NULL); nf_ct_iterate_cleanup(kill_all, NULL);
} }
EXPORT_SYMBOL_GPL(nf_conntrack_flush);
/* Mishearing the voices in his head, our hero wonders how he's /* Mishearing the voices in his head, our hero wonders how he's
supposed to kill the mall. */ supposed to kill the mall. */
......
...@@ -28,9 +28,13 @@ ...@@ -28,9 +28,13 @@
#include <net/netfilter/nf_conntrack_core.h> #include <net/netfilter/nf_conntrack_core.h>
ATOMIC_NOTIFIER_HEAD(nf_conntrack_chain); ATOMIC_NOTIFIER_HEAD(nf_conntrack_chain);
EXPORT_SYMBOL_GPL(nf_conntrack_chain);
ATOMIC_NOTIFIER_HEAD(nf_conntrack_expect_chain); ATOMIC_NOTIFIER_HEAD(nf_conntrack_expect_chain);
EXPORT_SYMBOL_GPL(nf_conntrack_expect_chain);
DEFINE_PER_CPU(struct nf_conntrack_ecache, nf_conntrack_ecache); DEFINE_PER_CPU(struct nf_conntrack_ecache, nf_conntrack_ecache);
EXPORT_PER_CPU_SYMBOL_GPL(nf_conntrack_ecache);
/* deliver cached events and clear cache entry - must be called with locally /* deliver cached events and clear cache entry - must be called with locally
* disabled softirqs */ * disabled softirqs */
...@@ -59,6 +63,7 @@ void nf_ct_deliver_cached_events(const struct nf_conn *ct) ...@@ -59,6 +63,7 @@ void nf_ct_deliver_cached_events(const struct nf_conn *ct)
__nf_ct_deliver_cached_events(ecache); __nf_ct_deliver_cached_events(ecache);
local_bh_enable(); local_bh_enable();
} }
EXPORT_SYMBOL_GPL(nf_ct_deliver_cached_events);
/* Deliver cached events for old pending events, if current conntrack != old */ /* Deliver cached events for old pending events, if current conntrack != old */
void __nf_ct_event_cache_init(struct nf_conn *ct) void __nf_ct_event_cache_init(struct nf_conn *ct)
...@@ -74,6 +79,7 @@ void __nf_ct_event_cache_init(struct nf_conn *ct) ...@@ -74,6 +79,7 @@ void __nf_ct_event_cache_init(struct nf_conn *ct)
ecache->ct = ct; ecache->ct = ct;
nf_conntrack_get(&ct->ct_general); nf_conntrack_get(&ct->ct_general);
} }
EXPORT_SYMBOL_GPL(__nf_ct_event_cache_init);
/* flush the event cache - touches other CPU's data and must not be called /* flush the event cache - touches other CPU's data and must not be called
* while packets are still passing through the code */ * while packets are still passing through the code */
......
...@@ -27,6 +27,8 @@ ...@@ -27,6 +27,8 @@
#include <net/netfilter/nf_conntrack_tuple.h> #include <net/netfilter/nf_conntrack_tuple.h>
LIST_HEAD(nf_conntrack_expect_list); LIST_HEAD(nf_conntrack_expect_list);
EXPORT_SYMBOL_GPL(nf_conntrack_expect_list);
kmem_cache_t *nf_conntrack_expect_cachep __read_mostly; kmem_cache_t *nf_conntrack_expect_cachep __read_mostly;
static unsigned int nf_conntrack_expect_next_id; static unsigned int nf_conntrack_expect_next_id;
...@@ -43,6 +45,7 @@ void nf_ct_unlink_expect(struct nf_conntrack_expect *exp) ...@@ -43,6 +45,7 @@ void nf_ct_unlink_expect(struct nf_conntrack_expect *exp)
master_help->expecting--; master_help->expecting--;
nf_conntrack_expect_put(exp); nf_conntrack_expect_put(exp);
} }
EXPORT_SYMBOL_GPL(nf_ct_unlink_expect);
static void expectation_timed_out(unsigned long ul_expect) static void expectation_timed_out(unsigned long ul_expect)
{ {
...@@ -65,6 +68,7 @@ __nf_conntrack_expect_find(const struct nf_conntrack_tuple *tuple) ...@@ -65,6 +68,7 @@ __nf_conntrack_expect_find(const struct nf_conntrack_tuple *tuple)
} }
return NULL; return NULL;
} }
EXPORT_SYMBOL_GPL(__nf_conntrack_expect_find);
/* Just find a expectation corresponding to a tuple. */ /* Just find a expectation corresponding to a tuple. */
struct nf_conntrack_expect * struct nf_conntrack_expect *
...@@ -80,6 +84,7 @@ nf_conntrack_expect_find_get(const struct nf_conntrack_tuple *tuple) ...@@ -80,6 +84,7 @@ nf_conntrack_expect_find_get(const struct nf_conntrack_tuple *tuple)
return i; return i;
} }
EXPORT_SYMBOL_GPL(nf_conntrack_expect_find_get);
/* If an expectation for this connection is found, it gets delete from /* If an expectation for this connection is found, it gets delete from
* global list then returned. */ * global list then returned. */
...@@ -125,6 +130,7 @@ void nf_ct_remove_expectations(struct nf_conn *ct) ...@@ -125,6 +130,7 @@ void nf_ct_remove_expectations(struct nf_conn *ct)
} }
} }
} }
EXPORT_SYMBOL_GPL(nf_ct_remove_expectations);
/* Would two expected things clash? */ /* Would two expected things clash? */
static inline int expect_clash(const struct nf_conntrack_expect *a, static inline int expect_clash(const struct nf_conntrack_expect *a,
...@@ -179,6 +185,7 @@ void nf_conntrack_unexpect_related(struct nf_conntrack_expect *exp) ...@@ -179,6 +185,7 @@ void nf_conntrack_unexpect_related(struct nf_conntrack_expect *exp)
} }
write_unlock_bh(&nf_conntrack_lock); write_unlock_bh(&nf_conntrack_lock);
} }
EXPORT_SYMBOL_GPL(nf_conntrack_unexpect_related);
/* We don't increase the master conntrack refcount for non-fulfilled /* We don't increase the master conntrack refcount for non-fulfilled
* conntracks. During the conntrack destruction, the expectations are * conntracks. During the conntrack destruction, the expectations are
...@@ -195,6 +202,7 @@ struct nf_conntrack_expect *nf_conntrack_expect_alloc(struct nf_conn *me) ...@@ -195,6 +202,7 @@ struct nf_conntrack_expect *nf_conntrack_expect_alloc(struct nf_conn *me)
atomic_set(&new->use, 1); atomic_set(&new->use, 1);
return new; return new;
} }
EXPORT_SYMBOL_GPL(nf_conntrack_expect_alloc);
void nf_conntrack_expect_init(struct nf_conntrack_expect *exp, int family, void nf_conntrack_expect_init(struct nf_conntrack_expect *exp, int family,
union nf_conntrack_address *saddr, union nf_conntrack_address *saddr,
...@@ -269,6 +277,7 @@ void nf_conntrack_expect_put(struct nf_conntrack_expect *exp) ...@@ -269,6 +277,7 @@ void nf_conntrack_expect_put(struct nf_conntrack_expect *exp)
if (atomic_dec_and_test(&exp->use)) if (atomic_dec_and_test(&exp->use))
kmem_cache_free(nf_conntrack_expect_cachep, exp); kmem_cache_free(nf_conntrack_expect_cachep, exp);
} }
EXPORT_SYMBOL_GPL(nf_conntrack_expect_put);
static void nf_conntrack_expect_insert(struct nf_conntrack_expect *exp) static void nf_conntrack_expect_insert(struct nf_conntrack_expect *exp)
{ {
...@@ -351,6 +360,7 @@ int nf_conntrack_expect_related(struct nf_conntrack_expect *expect) ...@@ -351,6 +360,7 @@ int nf_conntrack_expect_related(struct nf_conntrack_expect *expect)
write_unlock_bh(&nf_conntrack_lock); write_unlock_bh(&nf_conntrack_lock);
return ret; return ret;
} }
EXPORT_SYMBOL_GPL(nf_conntrack_expect_related);
#ifdef CONFIG_PROC_FS #ifdef CONFIG_PROC_FS
static void *exp_seq_start(struct seq_file *s, loff_t *pos) static void *exp_seq_start(struct seq_file *s, loff_t *pos)
......
...@@ -63,11 +63,13 @@ nf_ct_helper_find_get( const struct nf_conntrack_tuple *tuple) ...@@ -63,11 +63,13 @@ nf_ct_helper_find_get( const struct nf_conntrack_tuple *tuple)
return helper; return helper;
} }
EXPORT_SYMBOL_GPL(nf_ct_helper_find_get);
void nf_ct_helper_put(struct nf_conntrack_helper *helper) void nf_ct_helper_put(struct nf_conntrack_helper *helper)
{ {
module_put(helper->me); module_put(helper->me);
} }
EXPORT_SYMBOL_GPL(nf_ct_helper_put);
struct nf_conntrack_helper * struct nf_conntrack_helper *
__nf_conntrack_helper_find_byname(const char *name) __nf_conntrack_helper_find_byname(const char *name)
...@@ -81,6 +83,7 @@ __nf_conntrack_helper_find_byname(const char *name) ...@@ -81,6 +83,7 @@ __nf_conntrack_helper_find_byname(const char *name)
return NULL; return NULL;
} }
EXPORT_SYMBOL_GPL(__nf_conntrack_helper_find_byname);
static inline int unhelp(struct nf_conntrack_tuple_hash *i, static inline int unhelp(struct nf_conntrack_tuple_hash *i,
const struct nf_conntrack_helper *me) const struct nf_conntrack_helper *me)
...@@ -115,6 +118,7 @@ int nf_conntrack_helper_register(struct nf_conntrack_helper *me) ...@@ -115,6 +118,7 @@ int nf_conntrack_helper_register(struct nf_conntrack_helper *me)
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(nf_conntrack_helper_register);
void nf_conntrack_helper_unregister(struct nf_conntrack_helper *me) void nf_conntrack_helper_unregister(struct nf_conntrack_helper *me)
{ {
...@@ -148,3 +152,4 @@ void nf_conntrack_helper_unregister(struct nf_conntrack_helper *me) ...@@ -148,3 +152,4 @@ void nf_conntrack_helper_unregister(struct nf_conntrack_helper *me)
/* Someone could be still looking at the helper in a bh. */ /* Someone could be still looking at the helper in a bh. */
synchronize_net(); synchronize_net();
} }
EXPORT_SYMBOL_GPL(nf_conntrack_helper_unregister);
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
struct nf_conntrack_l4proto **nf_ct_protos[PF_MAX] __read_mostly; struct nf_conntrack_l4proto **nf_ct_protos[PF_MAX] __read_mostly;
struct nf_conntrack_l3proto *nf_ct_l3protos[AF_MAX] __read_mostly; struct nf_conntrack_l3proto *nf_ct_l3protos[AF_MAX] __read_mostly;
EXPORT_SYMBOL_GPL(nf_ct_l3protos);
#ifdef CONFIG_SYSCTL #ifdef CONFIG_SYSCTL
static DEFINE_MUTEX(nf_ct_proto_sysctl_mutex); static DEFINE_MUTEX(nf_ct_proto_sysctl_mutex);
...@@ -67,6 +68,7 @@ __nf_ct_l4proto_find(u_int16_t l3proto, u_int8_t l4proto) ...@@ -67,6 +68,7 @@ __nf_ct_l4proto_find(u_int16_t l3proto, u_int8_t l4proto)
return nf_ct_protos[l3proto][l4proto]; return nf_ct_protos[l3proto][l4proto];
} }
EXPORT_SYMBOL_GPL(__nf_ct_l4proto_find);
/* this is guaranteed to always return a valid protocol helper, since /* this is guaranteed to always return a valid protocol helper, since
* it falls back to generic_protocol */ * it falls back to generic_protocol */
...@@ -83,11 +85,13 @@ nf_ct_l4proto_find_get(u_int16_t l3proto, u_int8_t l4proto) ...@@ -83,11 +85,13 @@ nf_ct_l4proto_find_get(u_int16_t l3proto, u_int8_t l4proto)
return p; return p;
} }
EXPORT_SYMBOL_GPL(nf_ct_l4proto_find_get);
void nf_ct_l4proto_put(struct nf_conntrack_l4proto *p) void nf_ct_l4proto_put(struct nf_conntrack_l4proto *p)
{ {
module_put(p->me); module_put(p->me);
} }
EXPORT_SYMBOL_GPL(nf_ct_l4proto_put);
struct nf_conntrack_l3proto * struct nf_conntrack_l3proto *
nf_ct_l3proto_find_get(u_int16_t l3proto) nf_ct_l3proto_find_get(u_int16_t l3proto)
...@@ -102,11 +106,13 @@ nf_ct_l3proto_find_get(u_int16_t l3proto) ...@@ -102,11 +106,13 @@ nf_ct_l3proto_find_get(u_int16_t l3proto)
return p; return p;
} }
EXPORT_SYMBOL_GPL(nf_ct_l3proto_find_get);
void nf_ct_l3proto_put(struct nf_conntrack_l3proto *p) void nf_ct_l3proto_put(struct nf_conntrack_l3proto *p)
{ {
module_put(p->me); module_put(p->me);
} }
EXPORT_SYMBOL_GPL(nf_ct_l3proto_put);
int int
nf_ct_l3proto_try_module_get(unsigned short l3proto) nf_ct_l3proto_try_module_get(unsigned short l3proto)
...@@ -125,6 +131,7 @@ retry: p = nf_ct_l3proto_find_get(l3proto); ...@@ -125,6 +131,7 @@ retry: p = nf_ct_l3proto_find_get(l3proto);
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(nf_ct_l3proto_try_module_get);
void nf_ct_l3proto_module_put(unsigned short l3proto) void nf_ct_l3proto_module_put(unsigned short l3proto)
{ {
...@@ -136,6 +143,7 @@ void nf_ct_l3proto_module_put(unsigned short l3proto) ...@@ -136,6 +143,7 @@ void nf_ct_l3proto_module_put(unsigned short l3proto)
module_put(p->me); module_put(p->me);
} }
EXPORT_SYMBOL_GPL(nf_ct_l3proto_module_put);
static int kill_l3proto(struct nf_conn *i, void *data) static int kill_l3proto(struct nf_conn *i, void *data)
{ {
...@@ -207,6 +215,7 @@ int nf_conntrack_l3proto_register(struct nf_conntrack_l3proto *proto) ...@@ -207,6 +215,7 @@ int nf_conntrack_l3proto_register(struct nf_conntrack_l3proto *proto)
out: out:
return ret; return ret;
} }
EXPORT_SYMBOL_GPL(nf_conntrack_l3proto_register);
int nf_conntrack_l3proto_unregister(struct nf_conntrack_l3proto *proto) int nf_conntrack_l3proto_unregister(struct nf_conntrack_l3proto *proto)
{ {
...@@ -238,6 +247,7 @@ int nf_conntrack_l3proto_unregister(struct nf_conntrack_l3proto *proto) ...@@ -238,6 +247,7 @@ int nf_conntrack_l3proto_unregister(struct nf_conntrack_l3proto *proto)
out: out:
return ret; return ret;
} }
EXPORT_SYMBOL_GPL(nf_conntrack_l3proto_unregister);
static int nf_ct_l4proto_register_sysctl(struct nf_conntrack_l4proto *l4proto) static int nf_ct_l4proto_register_sysctl(struct nf_conntrack_l4proto *l4proto)
{ {
...@@ -359,6 +369,7 @@ int nf_conntrack_l4proto_register(struct nf_conntrack_l4proto *l4proto) ...@@ -359,6 +369,7 @@ int nf_conntrack_l4proto_register(struct nf_conntrack_l4proto *l4proto)
out: out:
return ret; return ret;
} }
EXPORT_SYMBOL_GPL(nf_conntrack_l4proto_register);
int nf_conntrack_l4proto_unregister(struct nf_conntrack_l4proto *l4proto) int nf_conntrack_l4proto_unregister(struct nf_conntrack_l4proto *l4proto)
{ {
...@@ -396,3 +407,4 @@ int nf_conntrack_l4proto_unregister(struct nf_conntrack_l4proto *l4proto) ...@@ -396,3 +407,4 @@ int nf_conntrack_l4proto_unregister(struct nf_conntrack_l4proto *l4proto)
out: out:
return ret; return ret;
} }
EXPORT_SYMBOL_GPL(nf_conntrack_l4proto_unregister);
...@@ -762,7 +762,7 @@ void nf_conntrack_tcp_update(struct sk_buff *skb, ...@@ -762,7 +762,7 @@ void nf_conntrack_tcp_update(struct sk_buff *skb,
receiver->td_end, receiver->td_maxend, receiver->td_maxwin, receiver->td_end, receiver->td_maxend, receiver->td_maxwin,
receiver->td_scale); receiver->td_scale);
} }
EXPORT_SYMBOL_GPL(nf_conntrack_tcp_update);
#endif #endif
#define TH_FIN 0x01 #define TH_FIN 0x01
...@@ -1405,6 +1405,7 @@ struct nf_conntrack_l4proto nf_conntrack_l4proto_tcp4 = ...@@ -1405,6 +1405,7 @@ struct nf_conntrack_l4proto nf_conntrack_l4proto_tcp4 =
#endif #endif
#endif #endif
}; };
EXPORT_SYMBOL_GPL(nf_conntrack_l4proto_tcp4);
struct nf_conntrack_l4proto nf_conntrack_l4proto_tcp6 = struct nf_conntrack_l4proto nf_conntrack_l4proto_tcp6 =
{ {
...@@ -1431,6 +1432,4 @@ struct nf_conntrack_l4proto nf_conntrack_l4proto_tcp6 = ...@@ -1431,6 +1432,4 @@ struct nf_conntrack_l4proto nf_conntrack_l4proto_tcp6 =
.ctl_table = tcp_sysctl_table, .ctl_table = tcp_sysctl_table,
#endif #endif
}; };
EXPORT_SYMBOL_GPL(nf_conntrack_l4proto_tcp6);
EXPORT_SYMBOL(nf_conntrack_l4proto_tcp4);
EXPORT_SYMBOL(nf_conntrack_l4proto_tcp6);
...@@ -223,6 +223,7 @@ struct nf_conntrack_l4proto nf_conntrack_l4proto_udp4 = ...@@ -223,6 +223,7 @@ struct nf_conntrack_l4proto nf_conntrack_l4proto_udp4 =
#endif #endif
#endif #endif
}; };
EXPORT_SYMBOL_GPL(nf_conntrack_l4proto_udp4);
struct nf_conntrack_l4proto nf_conntrack_l4proto_udp6 = struct nf_conntrack_l4proto nf_conntrack_l4proto_udp6 =
{ {
...@@ -247,6 +248,4 @@ struct nf_conntrack_l4proto nf_conntrack_l4proto_udp6 = ...@@ -247,6 +248,4 @@ struct nf_conntrack_l4proto nf_conntrack_l4proto_udp6 =
.ctl_table = udp_sysctl_table, .ctl_table = udp_sysctl_table,
#endif #endif
}; };
EXPORT_SYMBOL_GPL(nf_conntrack_l4proto_udp6);
EXPORT_SYMBOL(nf_conntrack_l4proto_udp4);
EXPORT_SYMBOL(nf_conntrack_l4proto_udp6);
...@@ -329,6 +329,7 @@ static struct file_operations ct_cpu_seq_fops = { ...@@ -329,6 +329,7 @@ static struct file_operations ct_cpu_seq_fops = {
/* Sysctl support */ /* Sysctl support */
int nf_conntrack_checksum __read_mostly = 1; int nf_conntrack_checksum __read_mostly = 1;
EXPORT_SYMBOL_GPL(nf_conntrack_checksum);
#ifdef CONFIG_SYSCTL #ifdef CONFIG_SYSCTL
/* Log invalid packets of a given protocol */ /* Log invalid packets of a given protocol */
...@@ -414,7 +415,7 @@ static ctl_table nf_ct_net_table[] = { ...@@ -414,7 +415,7 @@ static ctl_table nf_ct_net_table[] = {
}, },
{ .ctl_name = 0 } { .ctl_name = 0 }
}; };
EXPORT_SYMBOL(nf_ct_log_invalid); EXPORT_SYMBOL_GPL(nf_ct_log_invalid);
#endif /* CONFIG_SYSCTL */ #endif /* CONFIG_SYSCTL */
static int __init nf_conntrack_standalone_init(void) static int __init nf_conntrack_standalone_init(void)
...@@ -489,73 +490,4 @@ module_exit(nf_conntrack_standalone_fini); ...@@ -489,73 +490,4 @@ module_exit(nf_conntrack_standalone_fini);
void need_conntrack(void) void need_conntrack(void)
{ {
} }
EXPORT_SYMBOL_GPL(need_conntrack);
#ifdef CONFIG_NF_CONNTRACK_EVENTS
EXPORT_SYMBOL_GPL(nf_conntrack_chain);
EXPORT_SYMBOL_GPL(nf_conntrack_expect_chain);
EXPORT_SYMBOL_GPL(nf_conntrack_register_notifier);
EXPORT_SYMBOL_GPL(nf_conntrack_unregister_notifier);
EXPORT_SYMBOL_GPL(__nf_ct_event_cache_init);
EXPORT_PER_CPU_SYMBOL_GPL(nf_conntrack_ecache);
EXPORT_SYMBOL_GPL(nf_ct_deliver_cached_events);
#endif
EXPORT_SYMBOL(nf_ct_l3proto_try_module_get);
EXPORT_SYMBOL(nf_ct_l3proto_module_put);
EXPORT_SYMBOL(nf_conntrack_l3proto_register);
EXPORT_SYMBOL(nf_conntrack_l3proto_unregister);
EXPORT_SYMBOL(nf_conntrack_l4proto_register);
EXPORT_SYMBOL(nf_conntrack_l4proto_unregister);
EXPORT_SYMBOL(nf_ct_invert_tuplepr);
EXPORT_SYMBOL(nf_conntrack_destroyed);
EXPORT_SYMBOL(need_conntrack);
EXPORT_SYMBOL(nf_conntrack_helper_register);
EXPORT_SYMBOL(nf_conntrack_helper_unregister);
EXPORT_SYMBOL(nf_ct_iterate_cleanup);
EXPORT_SYMBOL(__nf_ct_refresh_acct);
EXPORT_SYMBOL(nf_ct_protos);
EXPORT_SYMBOL(__nf_ct_l4proto_find);
EXPORT_SYMBOL(nf_ct_l4proto_find_get);
EXPORT_SYMBOL(nf_ct_l4proto_put);
EXPORT_SYMBOL(nf_ct_l3proto_find_get);
EXPORT_SYMBOL(nf_ct_l3proto_put);
EXPORT_SYMBOL(nf_ct_l3protos);
EXPORT_SYMBOL_GPL(nf_conntrack_checksum);
EXPORT_SYMBOL(nf_conntrack_expect_alloc);
EXPORT_SYMBOL(nf_conntrack_expect_put);
EXPORT_SYMBOL(nf_conntrack_expect_related);
EXPORT_SYMBOL(nf_conntrack_unexpect_related);
EXPORT_SYMBOL(nf_conntrack_tuple_taken);
EXPORT_SYMBOL(nf_conntrack_htable_size);
EXPORT_SYMBOL(nf_conntrack_lock);
EXPORT_SYMBOL(nf_conntrack_hash);
EXPORT_SYMBOL(nf_conntrack_untracked);
EXPORT_SYMBOL_GPL(nf_conntrack_find_get);
#ifdef CONFIG_NF_NAT_NEEDED
EXPORT_SYMBOL(nf_conntrack_tcp_update);
EXPORT_SYMBOL(nf_conntrack_register_cache);
EXPORT_SYMBOL(nf_conntrack_unregister_cache);
EXPORT_SYMBOL(nf_conntrack_alter_reply);
#endif
EXPORT_SYMBOL(__nf_conntrack_confirm);
EXPORT_SYMBOL(nf_ct_get_tuple);
EXPORT_SYMBOL(nf_ct_invert_tuple);
EXPORT_SYMBOL(nf_conntrack_in);
EXPORT_SYMBOL(__nf_conntrack_attach);
EXPORT_SYMBOL(nf_conntrack_alloc);
EXPORT_SYMBOL(nf_conntrack_free);
EXPORT_SYMBOL(nf_conntrack_flush);
EXPORT_SYMBOL(nf_ct_remove_expectations);
EXPORT_SYMBOL(nf_ct_helper_find_get);
EXPORT_SYMBOL(nf_ct_helper_put);
EXPORT_SYMBOL(__nf_conntrack_helper_find_byname);
EXPORT_SYMBOL(__nf_conntrack_find);
EXPORT_SYMBOL(nf_ct_unlink_expect);
EXPORT_SYMBOL(nf_conntrack_hash_insert);
EXPORT_SYMBOL(__nf_conntrack_expect_find);
EXPORT_SYMBOL(nf_conntrack_expect_find_get);
EXPORT_SYMBOL(nf_conntrack_expect_list);
#if defined(CONFIG_NF_CT_NETLINK) || \
defined(CONFIG_NF_CT_NETLINK_MODULE)
EXPORT_SYMBOL(nf_ct_port_tuple_to_nfattr);
EXPORT_SYMBOL(nf_ct_port_nfattr_to_tuple);
#endif
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册