NetBSD-Bugs archive

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

Re: kern/47749



The following reply was made to PR kern/47749; it has been noted by GNATS.

From: Darren Reed <darrenr%netbsd.org@localhost>
To: =?ISO-8859-1?Q?Sergio_L=F3pez?= <slp%sinrega.org@localhost>
Cc: gnats-bugs%NetBSD.org@localhost, martin%duskware.de@localhost
Subject: Re: kern/47749
Date: Thu, 29 Aug 2013 23:14:08 +1000

 Sergio,
 
 I think that the change should look more like below.
 
 The reason is that when "pass" is restored with "pass = passo",
 the old rule from which "passo" belongs to should belong in
 fin_fr.
 
 Let me know how you go with testing it.
 
 Cheers,
 Darren
 
 Index: fil.c
 ===================================================================
 RCS file: /devel/CVS/IP-Filter/fil.c,v
 retrieving revision 2.243.2.164
 diff -u -r2.243.2.164 fil.c
 --- fil.c       26 Jan 2012 06:03:42 -0000      2.243.2.164
 +++ fil.c       29 Aug 2013 12:07:33 -0000
 @@ -1952,7 +1952,7 @@
  u_32_t pass;
  {
         int rulen, portcmp, off, skip;
 -       struct frentry *fr, *fnext;
 +       struct frentry *fr, *fnext, *fro;
         u_32_t passt, passo;
 
         /*
 @@ -2088,6 +2088,7 @@
                         }
                         passt = fr->fr_flags;
                 }
 +               fro = fin->fin_fr;
                 fin->fin_fr = fr;
 
  #ifdef  IPFILTER_LOG
 @@ -2148,6 +2149,7 @@
                                         ATOMIC_INCL(frstats[out].fr_ads);
                                 } else {
                                         ATOMIC_INCL(frstats[out].fr_bads);
 +                                       fin->fin_fr = fro;
                                         pass = passo;
                                         continue;
                                 }
 


Home | Main Index | Thread Index | Old Index