IPfilter
[Top] [All Lists]

Re: IPFilter 4.1.16

To: Corey Johnston <coreyj@gmail.com>
Subject: Re: IPFilter 4.1.16
From: Darren Reed <darrenr@reed.wattle.id.au>
Date: Wed, 20 Dec 2006 22:59:16 +1100
Cc: ipfilter@coombs.anu.edu.au, Darren Reed <avalon@caligula.anu.edu.au>
Delivered-to: sp-com-lists@consult.net
Delivered-to: ipfilter-list@securepoint.com
In-reply-to: <e2e114e10612191708u55e268bdoa81f82f2ebfb2065@mail.gmail.com>
References: <200612191510.kBJFAnhX015215@firewall.reed.wattle.id.au> <008e01c723b8$3a68f4a0$66fce20a@gp.inet> <e2e114e10612191521n797dececqab16e18df022be31@mail.gmail.com> <e2e114e10612191708u55e268bdoa81f82f2ebfb2065@mail.gmail.com>
Reply-to: darrenr@reed.wattle.id.au
Sender: owner-ipfilter@coombs.anu.edu.au
User-agent: Thunderbird 1.5.0.5 (Windows/20060719)
Corey Johnston wrote:
> Update on IPF 4.1.16
>
> - It seems that ipnat -sl crashes the network.
>
> The system lists all the active ipnat rules and then tries to list the
> active sessions and then the network drops-out. All interfaces die,
> and even
> the console locks-up as it appears all network services are unavailable.
> Reboot appears to be the only remedy.
>
> - happens consistently
>
> I ran into this when trying to discover the source of the ipnat slows i
> mentioned earlier.
> I'll try and be more specific, but it looks like there is a fairly
> significant problem, at least on the Solaris build, with NAT.

Bah, I forgot to look at this before.

Patch attached.

Darren

Index: ip_nat.c
===================================================================
RCS file: /devel/CVS/IP-Filter/ip_nat.c,v
retrieving revision 2.195.2.69
diff -c -r2.195.2.69 ip_nat.c
*** ip_nat.c    18 Dec 2006 17:04:33 -0000      2.195.2.69
--- ip_nat.c    19 Dec 2006 14:25:44 -0000
***************
*** 4933,4938 ****
--- 4933,4939 ----
                }
                break;
        default :
+               RWLOCK_EXIT(&ipf_nat);
                return EINVAL;
        }
  
***************
*** 5032,5039 ****
                        break;
                }
  
!               if ((count == 1) || (error != 0))
                        break;
  
                READ_ENTER(&ipf_nat);
  
--- 5033,5042 ----
                        break;
                }
  
!               if ((count == 1) || (error != 0)) {
!                       RWLOCK_EXIT(&ipf_nat);
                        break;
+               }
  
                READ_ENTER(&ipf_nat);
  
<Prev in Thread] Current Thread [Next in Thread>