diff options
author | Eric Leblond <eric@inl.fr> | 2009-03-16 09:54:21 -0400 |
---|---|---|
committer | Patrick McHardy <kaber@trash.net> | 2009-03-16 09:54:21 -0400 |
commit | ca735b3aaa945626ba65a3e51145bfe4ecd9e222 (patch) | |
tree | 5fe88e398080a1287fefc10a8bbc54f7eb8c99ba /include/net | |
parent | 28337ff5438a640afa713d874d076e3a8a9150da (diff) |
netfilter: use a linked list of loggers
This patch modifies nf_log to use a linked list of loggers for each
protocol. This list of loggers is read and write protected with a
mutex.
This patch separates registration and binding. To be used as
logging module, a module has to register calling nf_log_register()
and to bind to a protocol it has to call nf_log_bind_pf().
This patch also converts the logging modules to the new API. For nfnetlink_log,
it simply switchs call to register functions to call to bind function and
adds a call to nf_log_register() during init. For other modules, it just
remove a const flag from the logger structure and replace it with a
__read_mostly.
Signed-off-by: Eric Leblond <eric@inl.fr>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Diffstat (limited to 'include/net')
-rw-r--r-- | include/net/netfilter/nf_log.h | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/include/net/netfilter/nf_log.h b/include/net/netfilter/nf_log.h index 7182c06974f4..920997f1aff0 100644 --- a/include/net/netfilter/nf_log.h +++ b/include/net/netfilter/nf_log.h | |||
@@ -1,6 +1,8 @@ | |||
1 | #ifndef _NF_LOG_H | 1 | #ifndef _NF_LOG_H |
2 | #define _NF_LOG_H | 2 | #define _NF_LOG_H |
3 | 3 | ||
4 | #include <linux/netfilter.h> | ||
5 | |||
4 | /* those NF_LOG_* defines and struct nf_loginfo are legacy definitios that will | 6 | /* those NF_LOG_* defines and struct nf_loginfo are legacy definitios that will |
5 | * disappear once iptables is replaced with pkttables. Please DO NOT use them | 7 | * disappear once iptables is replaced with pkttables. Please DO NOT use them |
6 | * for any new code! */ | 8 | * for any new code! */ |
@@ -40,12 +42,15 @@ struct nf_logger { | |||
40 | struct module *me; | 42 | struct module *me; |
41 | nf_logfn *logfn; | 43 | nf_logfn *logfn; |
42 | char *name; | 44 | char *name; |
45 | struct list_head list[NFPROTO_NUMPROTO]; | ||
43 | }; | 46 | }; |
44 | 47 | ||
45 | /* Function to register/unregister log function. */ | 48 | /* Function to register/unregister log function. */ |
46 | int nf_log_register(u_int8_t pf, const struct nf_logger *logger); | 49 | int nf_log_register(u_int8_t pf, struct nf_logger *logger); |
47 | void nf_log_unregister(const struct nf_logger *logger); | 50 | void nf_log_unregister(struct nf_logger *logger); |
48 | void nf_log_unregister_pf(u_int8_t pf); | 51 | |
52 | int nf_log_bind_pf(u_int8_t pf, const struct nf_logger *logger); | ||
53 | void nf_log_unbind_pf(u_int8_t pf); | ||
49 | 54 | ||
50 | /* Calls the registered backend logging function */ | 55 | /* Calls the registered backend logging function */ |
51 | void nf_log_packet(u_int8_t pf, | 56 | void nf_log_packet(u_int8_t pf, |