Date: Thu, 1 Jul 2010 10:50:12 +0400 From: "Alexander Zagrebin" <alexz@visp.ru> To: <freebsd-current@freebsd.org>, <freebsd-net@freebsd.org> Subject: 8.1-RC2: bug in ng_ipfw (ng_ipfw doesn't return a packet back to ipfw) Message-ID: <FB42F5E7B867446C9AB4F3341FBCC607@vosz.local>
next in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format. ------=_NextPart_000_0777_01CB190B.2ECBBD70 Content-Type: text/plain; charset="koi8-r" Content-Transfer-Encoding: 7bit After upgrading from RELENG_8_0 to RELENG_8_1 (8.1-RC2) I have noticed that ng_ipfw doesn't return a packet back to ipfw after `ipfw add ... netgraph ...` due to the bug in the sys/netgraph/ng_ipfw.c The attached patch solves the problem. -- Alexander ------=_NextPart_000_0777_01CB190B.2ECBBD70 Content-Type: application/octet-stream; name="patch-sys-netgraph-ng_ipfw.c" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="patch-sys-netgraph-ng_ipfw.c" --- sys/netgraph/ng_ipfw.c.orig 2010-06-16 08:55:21.021628270 +0400=0A= +++ sys/netgraph/ng_ipfw.c 2010-07-01 10:29:09.561958484 +0400=0A= @@ -221,20 +221,21 @@=0A= static int=0A= ng_ipfw_rcvdata(hook_p hook, item_p item)=0A= {=0A= - struct ipfw_rule_ref *tag;=0A= + struct m_tag *tag;=0A= + struct ipfw_rule_ref *r;=0A= struct mbuf *m;=0A= =0A= NGI_GET_M(item, m);=0A= NG_FREE_ITEM(item);=0A= =0A= - tag =3D (struct ipfw_rule_ref *)=0A= - m_tag_locate(m, MTAG_IPFW_RULE, 0, NULL);=0A= + tag =3D m_tag_locate(m, MTAG_IPFW_RULE, 0, NULL);=0A= if (tag =3D=3D NULL) {=0A= NG_FREE_M(m);=0A= return (EINVAL); /* XXX: find smth better */=0A= };=0A= =0A= - if (tag->info & IPFW_INFO_IN) {=0A= + r =3D (struct ipfw_rule_ref *)(tag + 1);=0A= + if (r->info & IPFW_INFO_IN) {=0A= ip_input(m);=0A= return (0);=0A= } else {=0A= ------=_NextPart_000_0777_01CB190B.2ECBBD70--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?FB42F5E7B867446C9AB4F3341FBCC607>