IPfilter
[Top] [All Lists]

Re: Solaris 9 crashes with IP Filter

To: darrenr@reed.wattle.id.au
Subject: Re: Solaris 9 crashes with IP Filter
From: Vincent Fox <vbfox@ucdavis.edu>
Date: Wed, 14 Feb 2007 09:53:41 -0800
Cc: ipfilter@coombs.anu.edu.au
Delivered-to: sp-com-lists@consult.net
Delivered-to: ipfilter-list@securepoint.com
In-reply-to: <45D2B8A2.9080502@reed.wattle.id.au>
References: <200702131653.RAA03925@ultra.ap.krakow.pl> <45D255F4.2070109@ucdavis.edu> <45D2B8A2.9080502@reed.wattle.id.au>
Sender: owner-ipfilter@coombs.anu.edu.au
User-agent: Thunderbird 1.5.0.9 (Windows/20061207)

Wow, thanks for taking an interest Darren.

So you believe this is return-rst in pfil, and nothing to do with ipnat code?
It's odd that I've not had crashes before then, as we have pfil 2.1.11 with
return-rst rules on many systems.  We are using IP Filter on each server
as just a software firewall layer by the way, no routing or real NAT.

I suppose another choice would be remove return-rst from the rules?
We are only really using that for internal convenience so a system that is not
allowed access to ssh for example, gets a quick reject rather than waiting
for timeout.

On the other hand these systems are UltraSparc 4 systems unlike most
of our servers, I can't help thinking maybe there is a platform difference that
is being tickled.

I'll try the patched pfil, with the existing ipf package and let you know.

Darren Reed wrote:
Try this patch to the pfil module.

Darren

diff -c -r1.18 pkt.c
*** pkt.c       24 May 2006 06:06:48 -0000      1.18
--- pkt.c       13 Feb 2007 10:20:28 -0000
***************
*** 210,215 ****
--- 210,224 ----
  }
+ void
+ pfil_timeoutsend(void *arg)
+ {
+       mblk_t *m = arg;
+
+       putnext(m->b_queue, m);
+ }
+
+
  /*
------------------------------------------------------------------------ */
/* Function: pfil_makearpreq */
  /* Returns:     int  - 0 == success, 1 ==
failure                           */
***************
*** 303,308 ****
linkb(new->ire_mp, mb);
        linkb(n, new->ire_mp);
!       putnext(q, n);
        return 0;
  }
--- 312,318 ----
linkb(new->ire_mp, mb);
        linkb(n, new->ire_mp);
!       n->b_queue = q;
!       timeout(pfil_timeoutsend, n, 2);
        return 0;
  }



<Prev in Thread] Current Thread [Next in Thread>