Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 15 Sep 2003 01:24:43 -0700
From:      Luigi Rizzo <rizzo@icir.org>
To:        Eugene Grosbein <eugen@kuzbass.ru>
Cc:        net@freebsd.org
Subject:   Re: ipfw: pullup failed
Message-ID:  <20030915012443.A49336@xorpc.icir.org>
In-Reply-To: <3F654BBB.9240465B@kuzbass.ru>; from eugen@kuzbass.ru on Mon, Sep 15, 2003 at 01:18:51PM %2B0800
References:  <3F6546C1.41B7143@kuzbass.ru> <20030914221343.A25641@xorpc.icir.org> <3F654BBB.9240465B@kuzbass.ru>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Sep 15, 2003 at 01:18:51PM +0800, Eugene Grosbein wrote:
> Luigi Rizzo wrote:
> 
> > > My router that uses ipfw2 for WF2Q+ sometimes writes in log:
> > >
> > > Sep 15 00:00:00 gw2 newsyslog[51667]: logfile turned over
> > > Sep 15 06:20:27 gw2 /kernel: ipfw: pullup failed
> > > Sep 15 07:00:42 gw2 /kernel: ipfw: pullup failed
> > > Sep 15 07:58:55 gw2 /kernel: ipfw: pullup failed
> > > Sep 15 08:23:13 gw2 /kernel: ipfw: pullup failed
> > > Sep 15 10:14:38 gw2 /kernel: ipfw: pullup failed
> > > Sep 15 11:50:53 gw2 /kernel: ipfw: pullup failed
> > 
> > a possibility is that it has run out of mbufs. what does netstat -m say ?
> 
> 669/1920/65536 mbufs in use (current/peak/max):
>         654 mbufs allocated to data
>         15 mbufs allocated to packet headers
> 472/712/16384 mbuf clusters in use (current/peak/max)

ok, another one is that the packet was too short for the desired
length (supposedly, as a result of a collision).
You could perhaps try the following patch and see if it tells you
something more interesting.

cheers
luigi


 static int
 ipfw_chk(struct ip_fw_args *args)
 {
+	int desired_len = -1;
        /*
         * Local variables hold state during the processing of a packet.
         *
         * IMPORTANT NOTE: to speed up the processing of rules, there

...

 #define PULLUP_TO(len)                                         \
                do {                                            \
                        if ((m)->m_len < (len)) {               \   
                            args->m = m = m_pullup(m, (len));   \   
-                           if (m == 0)                         \
+                           if (m == 0) {                       \
+				desired_len = (len);		\
                                goto pullup_failed;             \
+			    }					\
                            ip = mtod(m, struct ip *);          \
                        }                                       \  
                } while (0)

...
 pullup_failed:
        if (fw_verbose)
-               printf("pullup failed\n");
+               printf("pullup failed have %d want %d\n", m->m_len,desired_len);
        return(IP_FW_PORT_DENY_FLAG);
}


> 1904 Kbytes allocated to network (3% of mb_map in use)
> 0 requests for memory denied
> 0 requests for memory delayed
> 0 calls to protocol drain routines



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030915012443.A49336>