summaryrefslogtreecommitdiffstats
path: root/sys/netgraph
diff options
context:
space:
mode:
authorthompsa <thompsa@FreeBSD.org>2010-01-18 20:34:00 +0000
committerthompsa <thompsa@FreeBSD.org>2010-01-18 20:34:00 +0000
commit5056e27c2d94cd3dce26860a82a784814b55b3e9 (patch)
treedd7afcb5b04be71754018029b851f7d8237827cf /sys/netgraph
parent49b1f6fa86c80625bf72859d7b5c716fab6d1233 (diff)
downloadFreeBSD-src-5056e27c2d94cd3dce26860a82a784814b55b3e9.zip
FreeBSD-src-5056e27c2d94cd3dce26860a82a784814b55b3e9.tar.gz
Declare a new EVENTHANDLER called iflladdr_event which signals that the L2
address on an interface has changed. This lets stacked interfaces such as vlan(4) detect that their lower interface has changed and adjust things in order to keep working. Previously this situation broke at least vlan(4) and lagg(4) configurations. The EVENTHANDLER_INVOKE call was not placed within if_setlladdr() due to the risk of a loop. PR: kern/142927 Submitted by: Nikolay Denev
Diffstat (limited to 'sys/netgraph')
-rw-r--r--sys/netgraph/ng_eiface.c1
-rw-r--r--sys/netgraph/ng_ether.c1
-rw-r--r--sys/netgraph/ng_fec.c1
3 files changed, 3 insertions, 0 deletions
diff --git a/sys/netgraph/ng_eiface.c b/sys/netgraph/ng_eiface.c
index 5c91b81..72cc55c 100644
--- a/sys/netgraph/ng_eiface.c
+++ b/sys/netgraph/ng_eiface.c
@@ -431,6 +431,7 @@ ng_eiface_rcvmsg(node_p node, item_p item, hook_p lasthook)
}
error = if_setlladdr(priv->ifp,
(u_char *)msg->data, ETHER_ADDR_LEN);
+ EVENTHANDLER_INVOKE(iflladdr_event, priv->ifp);
break;
}
diff --git a/sys/netgraph/ng_ether.c b/sys/netgraph/ng_ether.c
index dc38d41..5abc5aa 100644
--- a/sys/netgraph/ng_ether.c
+++ b/sys/netgraph/ng_ether.c
@@ -481,6 +481,7 @@ ng_ether_rcvmsg(node_p node, item_p item, hook_p lasthook)
}
error = if_setlladdr(priv->ifp,
(u_char *)msg->data, ETHER_ADDR_LEN);
+ EVENTHANDLER_INVOKE(iflladdr_event, priv->ifp);
break;
}
case NGM_ETHER_GET_PROMISC:
diff --git a/sys/netgraph/ng_fec.c b/sys/netgraph/ng_fec.c
index c1760d1..919947a 100644
--- a/sys/netgraph/ng_fec.c
+++ b/sys/netgraph/ng_fec.c
@@ -433,6 +433,7 @@ ng_fec_addport(struct ng_fec_private *priv, char *iface)
/* Set up phony MAC address. */
if_setlladdr(bifp, IF_LLADDR(ifp), ETHER_ADDR_LEN);
+ EVENTHANDLER_INVOKE(iflladdr_event, bifp);
/* Save original input vector */
new->fec_if_input = bifp->if_input;
OpenPOWER on IntegriCloud