Date: Sun, 24 Oct 2004 22:10:29 GMT From: Max Laier <max@love2party.net> To: pf@FreeBSD.org Subject: Re: kern/72444: PF can't properly detect interface after 'ifconfig XXX name YYY' Message-ID: <200410242210.i9OMATO7070316@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/72444; it has been noted by GNATS. From: Max Laier <max@love2party.net> To: freebsd-gnats-submit@freebsd.org, ed@il.fontys.nl Cc: Subject: Re: kern/72444: PF can't properly detect interface after 'ifconfig XXX name YYY' Date: Mon, 25 Oct 2004 00:00:17 +0200 --Boundary-00=_zXCfBCdi0Ycu4DN Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline I have uploaded an updated diff. This version should do better with module load/unload and allow the use of "6to4" interfaces. Please test and tell me if it introduces other problems. Diff attached or at: http://people.freebsd.org/~mlaier/pf_if.c.diff -- Max --Boundary-00=_zXCfBCdi0Ycu4DN Content-Type: text/x-diff; charset="us-ascii"; name="pf_if.c.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="pf_if.c.diff" Index: pf_if.c =================================================================== RCS file: /usr/store/mlaier/fcvs/src/sys/contrib/pf/net/pf_if.c,v retrieving revision 1.6 diff -u -r1.6 pf_if.c --- pf_if.c 14 Sep 2004 15:20:24 -0000 1.6 +++ pf_if.c 24 Oct 2004 21:52:45 -0000 @@ -157,12 +157,11 @@ #ifdef __FreeBSD__ PF_LOCK(); IFNET_RLOCK(); - TAILQ_FOREACH(ifp, &ifnet, if_link) - if (ifp->if_dunit != IF_DUNIT_NONE) { - IFNET_RUNLOCK(); - pfi_attach_ifnet(ifp); - IFNET_RLOCK(); - } + TAILQ_FOREACH(ifp, &ifnet, if_link) { + IFNET_RUNLOCK(); + pfi_attach_ifnet(ifp); + IFNET_RLOCK(); + } IFNET_RUNLOCK(); PF_UNLOCK(); pfi_dummy = pfi_if_create("notyet", pfi_self, @@ -248,8 +247,7 @@ pfi_attach_ifnet_event(void *arg __unused, struct ifnet *ifp) { PF_LOCK(); - if (ifp->if_dunit != IF_DUNIT_NONE) - pfi_attach_ifnet(ifp); + pfi_attach_ifnet(ifp); PF_UNLOCK(); } @@ -341,8 +339,8 @@ /* add/modify interface */ if (p == NULL) - p = pfi_if_create(ifp->if_xname, q, - realname?PFI_IFLAG_INSTANCE:PFI_IFLAG_PLACEHOLDER); + p = pfi_if_create(ifp->if_xname, q, PFI_IFLAG_INSTANCE | + (realname?0:PFI_IFLAG_PLACEHOLDER)); else { /* remove from the dummy group */ /* XXX: copy stats? We should not have any!!! */ @@ -354,10 +352,9 @@ q->pfik_addcnt++; TAILQ_INSERT_TAIL(&q->pfik_grouphead, p, pfik_instances); - if (realname) { + if (realname) p->pfik_flags &= ~PFI_IFLAG_PLACEHOLDER; - p->pfik_flags |= PFI_IFLAG_INSTANCE; - } + p->pfik_flags |= PFI_IFLAG_INSTANCE; } if (p == NULL) panic("pfi_attach_ifnet: " @@ -874,6 +871,7 @@ if (p->pfik_rules > 0 || p->pfik_states > 0) { /* move back to the dummy group */ p->pfik_parent = pfi_dummy; + p->pfik_flags &= ~PFI_IFLAG_INSTANCE; pfi_dummy->pfik_addcnt++; TAILQ_INSERT_TAIL(&pfi_dummy->pfik_grouphead, p, pfik_instances); @@ -912,11 +910,8 @@ */ IFNET_RLOCK(); - TAILQ_FOREACH(ifp, &ifnet, if_link) { - if (ifp->if_dunit == IF_DUNIT_NONE) - continue; + TAILQ_FOREACH(ifp, &ifnet, if_link) pfi_newgroup(ifp->if_dname, PFI_IFLAG_DYNAMIC); - } IFNET_RUNLOCK(); #else char *buses[] = PFI_DYNAMIC_BUSES; --Boundary-00=_zXCfBCdi0Ycu4DN--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200410242210.i9OMATO7070316>