All of lore.kernel.org
 help / color / mirror / Atom feed
From: Patrick McHardy <kaber@trash.net>
To: Eric Leblond <eric@inl.fr>
Cc: netfilter-devel@vger.kernel.org
Subject: Re: [PATCH 1/3] netfilter: use a linked list of loggers.
Date: Mon, 16 Mar 2009 14:54:44 +0100	[thread overview]
Message-ID: <49BE5A24.3060402@trash.net> (raw)
In-Reply-To: <1235080458-6623-1-git-send-email-eric@inl.fr>

Eric Leblond wrote:
> 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.

Applied, thanks. I've made a few changes, please see below.

> -void nf_log_unregister(const struct nf_logger *logger)
> +void nf_log_unregister(struct nf_logger *logger)
>  {
>  	int i;
>  
>  	mutex_lock(&nf_log_mutex);
>  	for (i = 0; i < ARRAY_SIZE(nf_loggers); i++) {
> -		if (nf_loggers[i] == logger)
> +		const struct nf_logger *c_logger = rcu_dereference(nf_loggers[i]);

I've moved the definitionn to the beginning of the function to
bring the line down to 80 characters.

> +		if (c_logger == logger)
>  			rcu_assign_pointer(nf_loggers[i], NULL);
> +		list_del(&(logger->list[i]));
>  	}
>  	mutex_unlock(&nf_log_mutex);
>  
> @@ -73,6 +76,28 @@ void nf_log_unregister(const struct nf_logger *logger)
>  }
>  EXPORT_SYMBOL(nf_log_unregister);
>  
> +int nf_log_bind_pf(u_int8_t pf, const struct nf_logger *logger)
> +{
> +	mutex_lock(&nf_log_mutex);
> +	if (__find_logger(pf, logger->name) == NULL) {
> +		mutex_unlock(&nf_log_mutex);
> +		return -1;

This is returned directly to userspace and thus needs to use
errno-codes. I've changed it to -ENOENT.

> +	}
> +	rcu_assign_pointer(nf_loggers[pf], logger);
> +	mutex_unlock(&nf_log_mutex);
> +	return 0;
> +}
> +EXPORT_SYMBOL(nf_log_bind_pf);
> +
> +int nf_log_unbind_pf(u_int8_t pf)
> +{
> +	mutex_lock(&nf_log_mutex);
> +	rcu_assign_pointer(nf_loggers[pf], NULL);
> +	mutex_unlock(&nf_log_mutex);
> +	return 0;
> +}
> +EXPORT_SYMBOL(nf_log_unbind_pf);

This should return void since there's nothing a caller can do
about it and the only existing one doesn't care.

> diff --git a/net/netfilter/nfnetlink_log.c b/net/netfilter/nfnetlink_log.c
> index c712e9f..42e7de9 100644
> --- a/net/netfilter/nfnetlink_log.c
> +++ b/net/netfilter/nfnetlink_log.c

> @@ -952,6 +952,11 @@ static int __init nfnetlink_log_init(void)
>  		goto cleanup_netlink_notifier;
>  	}
>  
> +	if ((status = nf_log_register(NFPROTO_UNSPEC, &nfulnl_logger)) < 0) {
> +		printk(KERN_ERR "log: failed to register logger\n");
> +		goto cleanup_netlink_notifier;

This needs to undo the nfnetlink subsys registration. I've fixed
it before applying.

  reply	other threads:[~2009-03-16 13:54 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-01-02 17:04 [netfilter 0/5] nf_log refactoring Eric Leblond
2009-01-02 17:07 ` [PATCH 1/5] netfilter: use a linked list of loggers Eric Leblond
2009-01-02 17:07 ` [PATCH 2/5] netfilter: suppress nf_log_unregister_pf function Eric Leblond
2009-01-02 17:07 ` [PATCH 3/5] netfilter: convert logger modules to new API Eric Leblond
2009-01-07  7:17   ` Eric Leblond
2009-01-07 20:05     ` [PATCH 1/6] netfilter: use a linked list of loggers Eric Leblond
2009-01-07 20:05     ` [PATCH 2/6] netfilter: suppress nf_log_unregister_pf function Eric Leblond
2009-01-07 20:05     ` [PATCH 3/6] netfilter: bind at registration if no logger is already set Eric Leblond
2009-01-07 20:05     ` [PATCH 4/6] netfilter: convert logger modules to new API Eric Leblond
2009-01-07 23:53       ` Jan Engelhardt
2009-01-07 20:05     ` [PATCH 5/6] netfilter: print the list of register loggers Eric Leblond
2009-01-07 23:56       ` Jan Engelhardt
2009-01-08 22:01         ` [PATCH 0/6] rework of nf_log refactoring Eric Leblond
2009-01-08 22:03           ` [PATCH 1/6] netfilter: use a linked list of loggers Eric Leblond
2009-01-08 22:03           ` [PATCH 2/6] netfilter: suppress nf_log_unregister_pf function Eric Leblond
2009-01-08 22:03           ` [PATCH 3/6] netfilter: bind at registration if no logger is already set Eric Leblond
2009-01-08 22:03           ` [PATCH 4/6] netfilter: convert logger modules to new API Eric Leblond
2009-01-08 22:03           ` [PATCH 5/6] netfilter: print the list of register loggers Eric Leblond
2009-01-08 22:03           ` [PATCH 6/6] netfilter: sysctl support of logger choice Eric Leblond
2009-01-12  7:14           ` [PATCH] netfilter: desactivate nf_log logger via sysctl Eric Leblond
2009-02-09 17:43           ` [PATCH 0/6] rework of nf_log refactoring Patrick McHardy
2009-02-09 21:08             ` Eric Leblond
2009-02-09 21:11               ` [PATCH 1/7] netfilter: use a linked list of loggers Eric Leblond
2009-02-11 14:13                 ` Patrick McHardy
2009-02-15 12:33                   ` Eric Leblond
2009-02-15 12:37                     ` [PATCH 1/4] " Eric Leblond
2009-02-18 16:08                       ` Patrick McHardy
2009-02-15 12:37                     ` [PATCH 2/4] netfilter: suppress now unused nf_log_unregister_pf() function Eric Leblond
2009-02-18 16:10                       ` Patrick McHardy
2009-02-15 12:37                     ` [PATCH 3/4] netfilter: print the list of register loggers Eric Leblond
2009-02-16 17:01                       ` Jan Engelhardt
2009-02-16 17:11                         ` Patrick McHardy
2009-02-15 12:37                     ` [PATCH 4/4] netfilter: sysctl support of logger choice Eric Leblond
2009-02-18 15:56                       ` Patrick McHardy
2009-02-19 20:59                         ` Eric Leblond
2009-02-19 21:02                           ` Patrick McHardy
2009-02-19 21:52                             ` Eric Leblond
2009-02-19 21:54                               ` [PATCH 1/3] netfilter: use a linked list of loggers Eric Leblond
2009-03-16 13:54                                 ` Patrick McHardy [this message]
2009-02-19 21:54                               ` [PATCH 2/3] netfilter: print the list of register loggers Eric Leblond
2009-03-16 13:56                                 ` Patrick McHardy
2009-02-19 21:54                               ` [PATCH 3/3] netfilter: sysctl support of logger choice Eric Leblond
2009-03-16 13:58                                 ` Patrick McHardy
2009-03-17 23:15                                   ` Eric Leblond
2009-03-17 23:27                                     ` [PATCH] " Eric Leblond
2009-03-19  9:45                                       ` Patrick McHardy
2009-03-19 21:46                                         ` Eric Leblond
2009-03-23 12:17                                           ` Patrick McHardy
2009-02-09 21:11               ` [PATCH 2/7] netfilter: suppress nf_log_unregister_pf function Eric Leblond
2009-02-09 21:11               ` [PATCH 3/7] netfilter: bind at registration if no logger is already set Eric Leblond
2009-02-09 21:11               ` [PATCH 4/7] netfilter: convert logger modules to new API Eric Leblond
2009-02-09 21:11               ` [PATCH 5/7] netfilter: print the list of register loggers Eric Leblond
2009-02-09 21:11               ` [PATCH 6/7] netfilter: sysctl support of logger choice Eric Leblond
2009-02-11 14:21                 ` Patrick McHardy
2009-02-09 21:11               ` [PATCH 7/7] netfilter: fix nflog timeout handling Eric Leblond
2009-02-11 14:33                 ` Patrick McHardy
2009-01-07 20:05     ` [PATCH 6/6] netfilter: sysctl support of logger choice Eric Leblond
2009-01-02 17:07 ` [PATCH 4/5] netfilter: print the list of register loggers Eric Leblond
2009-01-02 17:07 ` [PATCH 5/5] netfilter: sysctl support of logger choice Eric Leblond

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=49BE5A24.3060402@trash.net \
    --to=kaber@trash.net \
    --cc=eric@inl.fr \
    --cc=netfilter-devel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.