Re: [PATCH nf-next v3] netfilter: nf_defrag: Skip defrag if NOTRACK is set

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Subash,

One more concern before this gets upstream.

On Wed, Jan 03, 2018 at 09:24:47PM -0700, Subash Abhinov Kasiviswanathan wrote:
> conntrack defrag is needed only if some module like CONNTRACK or NAT
> explicitly requests it. For plain forwarding scenarios, defrag is
> not needed and can be skipped if NOTRACK is set in a rule.
> 
> Since conntrack defrag is currently higher priority than raw table,
> setting NOTRACK is not sufficient. We need to move raw to a higher
> priority for iptables only.
> 
> This is achieved by introducing a module parameter which allows to
> modify the priority. By default, the priority is NF_IP_PRI_RAW to
> support legacy behavior.
> 
> v1->v2: Instead of modifying NF_IP_PRI_RAW itself, use a module
> parameter to pass in the priority during module load as suggested
> by Pablo. Also update commit text.
> 
> v2->v3: Implement similar functionality for IPv6 as well
> 
> Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@xxxxxxxxxxxxxx>
> ---
>  net/ipv4/netfilter/iptable_raw.c          | 14 +++++++++++++-
>  net/ipv4/netfilter/nf_defrag_ipv4.c       |  2 +-
>  net/ipv6/netfilter/ip6table_raw.c         | 14 +++++++++++++-
>  net/ipv6/netfilter/nf_defrag_ipv6_hooks.c |  3 +++
>  4 files changed, 30 insertions(+), 3 deletions(-)
> 
> diff --git a/net/ipv4/netfilter/iptable_raw.c b/net/ipv4/netfilter/iptable_raw.c
> index 2642ecd..607392b 100644
> --- a/net/ipv4/netfilter/iptable_raw.c
> +++ b/net/ipv4/netfilter/iptable_raw.c
> @@ -12,7 +12,11 @@
>  
>  static int __net_init iptable_raw_table_init(struct net *net);
>  
> -static const struct xt_table packet_raw = {
> +static int priority __read_mostly = NF_IP_PRI_RAW;
> +MODULE_PARM_DESC(priority, "Priority of IPv4 raw table (NF_IP_PRI_RAW)");
> +module_param(priority, int, 0000);

Do you think we can turn this into an on/off knob instead?

I mean, I think it's good if you add a new
NF_IP_PRI_RAW_BEFORE_DEFRAG and we place it into uapi.

I'm just worried about follow up patches from people asking to making
this flexible in all other existing tables, I would like this does not
happen :-).

> +
> +static struct xt_table packet_raw = {
>  	.name = "raw",
>  	.valid_hooks =  RAW_VALID_HOOKS,
>  	.me = THIS_MODULE,
> @@ -70,6 +74,14 @@ static int __init iptable_raw_init(void)
>  {
>  	int ret;
>  
> +	if (priority < NF_IP_PRI_CONNTRACK_DEFRAG &&
> +	    priority > NF_IP_PRI_FIRST) {
> +		packet_raw.priority = priority;
> +
> +		pr_info("iptable_raw: Using custom rule priority=%d\n",
                         ^^^^^^^^^^^^

Probably better if you add:

        #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt

in this patch while on this.

Thanks for your patience, we're almost there.
--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Netfitler Users]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux