summaryrefslogtreecommitdiffstats
path: root/sys/contrib
diff options
context:
space:
mode:
authormlaier <mlaier@FreeBSD.org>2004-11-03 17:21:12 +0000
committermlaier <mlaier@FreeBSD.org>2004-11-03 17:21:12 +0000
commit829a2496de9b45e7ea583ab9152b10305146e411 (patch)
tree523728c70febd40b3b5c903eab6145bde23cb843 /sys/contrib
parenta1ade15a09a72b8725f170cadcdb5608f28d8e52 (diff)
downloadFreeBSD-src-829a2496de9b45e7ea583ab9152b10305146e411.zip
FreeBSD-src-829a2496de9b45e7ea583ab9152b10305146e411.tar.gz
Improved interface handling. This should fix the use of renamed interfaces
(ifconfig xl0 name foo) as well as some special interfaces such as the 6to4 tunnel. Reported by: Ed Schouten <ed (at) il ! fontys , nl> Tested by: freebsd-pf PR: kern/72444 MFC after: 3 weeks
Diffstat (limited to 'sys/contrib')
-rw-r--r--sys/contrib/pf/net/pf_if.c29
1 files changed, 12 insertions, 17 deletions
diff --git a/sys/contrib/pf/net/pf_if.c b/sys/contrib/pf/net/pf_if.c
index 56388c9..78e99e9 100644
--- a/sys/contrib/pf/net/pf_if.c
+++ b/sys/contrib/pf/net/pf_if.c
@@ -157,12 +157,11 @@ pfi_initialize(void)
#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 @@ void
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 @@ pfi_attach_ifnet(struct ifnet *ifp)
/* 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 @@ pfi_attach_ifnet(struct ifnet *ifp)
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 @@ pfi_maybe_destroy(struct pfi_kif *p)
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 @@ pfi_dynamic_drivers(void)
*/
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;
OpenPOWER on IntegriCloud