Date: Tue, 25 Nov 2003 20:38:36 +0700 From: Eugene Grosbein <eugen@kuzbass.ru> To: Luigi Rizzo <rizzo@icir.org> Cc: net@freebsd.org Subject: Re: ipfw: pullup failed Message-ID: <3FC35B5C.AC3C578F@kuzbass.ru> References: <3F6546C1.41B7143@kuzbass.ru> <3F654BBB.9240465B@kuzbass.ru> <20030915012443.A49336@xorpc.icir.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Luigi Rizzo wrote: > > > > My router that uses ipfw2 for WF2Q+ sometimes writes in log: > > > > 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. > > 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); > } I've upgraded my router to 4.9-STABLE and applied your patch. Well, it produces something interesting. It produces kernel panic because m once became NULL in this printf :-) Eugene Grosbein
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3FC35B5C.AC3C578F>