Re: [PATCH 01/17] netfilter: add struct nf_proto_net for register l4proto sysctl
From: Gao feng <hidden>
Date: 2012-05-25 06:02:37
Also in:
netfilter-devel
于 2012年05月25日 10:54, Pablo Neira Ayuso 写道:
On Fri, May 25, 2012 at 09:05:34AM +0800, Gao feng wrote:quoted
于 2012年05月24日 22:38, Pablo Neira Ayuso 写道:quoted
On Thu, May 24, 2012 at 06:54:42PM +0800, Gao feng wrote: [...]quoted
quoted
quoted
quoted
I don't see why we need this new field. It seems to be set to 1 in each structure that has set: .ctl_compat_table to non-NULL. So, it's redundant. Moreover, you already know from the protocol tracker itself if you have to allocate the compat ctl table or not. In other words: You set compat to 1 for nf_conntrack_l4proto_generic. Then, you pass that compat value to generic_init_net via ->inet_net again, but this information (that determines if the compat has to be done or not) is already in the scope of the protocol tracker.because some protocols such l4proto_tcp6 and l4proto_tcp use the same init_net function. the l4proto_tcp6 doesn't need compat sysctl, so we should use this new field to identify if we should kmemdup compat_sysctl_table.Then, could you use two init_net functions? one for TCP for IPv4 and another for TCP for IPv6?Of cause, if you prefer to impletment it in this way.If this removes the .compat field that you added, then use two init_net functions, yes.Sorry I miss something. nf_ct_l4proto_unregister_sysctl also uses .compat to identify if we can unregister the compat sysctl. if we register l4proto_tcp and l4proto_tcp6 both. without .compat, when unregister l4proto_tcp6, the compat sysctl will be unregister too. So maybe we have to use .compat.Could you resolve this by checking pn->ctl_compat_header != NULL ?
pn->ctl_table_header and ctl_compat_header is shared by l4proto_tcp and l4proto_tcp6. if we both register l4proto_tcp and l4proto_tcp6, when unregister l4proto_tcp6 pn->ctl_compat_header must not be NULL. -- To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html