svn commit: r196624 - in stable/8/sys: . amd64/include/xen
cddl/contrib/opensolaris contrib/dev/acpica contrib/pf
dev/xen/xenpci net
Marko Zec
zec at FreeBSD.org
Fri Aug 28 19:18:21 UTC 2009
Author: zec
Date: Fri Aug 28 19:18:20 2009
New Revision: 196624
URL: http://svn.freebsd.org/changeset/base/196624
Log:
MFC r196504:
When moving ifnets from one vnet to another, and the ifnet
has ifaddresses of AF_LINK type which thus have an embedded
if_index "backpointer", we must update that if_index backpointer
to reflect the new if_index that our ifnet just got assigned.
This change affects only options VIMAGE builds.
Submitted by: bz
Reviewed by: bz
Approved by: re (rwatson), julian (mentor)
Approved by: re (rwatson)
Modified:
stable/8/sys/ (props changed)
stable/8/sys/amd64/include/xen/ (props changed)
stable/8/sys/cddl/contrib/opensolaris/ (props changed)
stable/8/sys/contrib/dev/acpica/ (props changed)
stable/8/sys/contrib/pf/ (props changed)
stable/8/sys/dev/xen/xenpci/ (props changed)
stable/8/sys/net/if.c
Modified: stable/8/sys/net/if.c
==============================================================================
--- stable/8/sys/net/if.c Fri Aug 28 19:15:17 2009 (r196623)
+++ stable/8/sys/net/if.c Fri Aug 28 19:18:20 2009 (r196624)
@@ -570,6 +570,21 @@ if_attach_internal(struct ifnet *ifp, in
/* Reliably crash if used uninitialized. */
ifp->if_broadcastaddr = NULL;
}
+#ifdef VIMAGE
+ else {
+ /*
+ * Update the interface index in the link layer address
+ * of the interface.
+ */
+ for (ifa = ifp->if_addr; ifa != NULL;
+ ifa = TAILQ_NEXT(ifa, ifa_link)) {
+ if (ifa->ifa_addr->sa_family == AF_LINK) {
+ sdl = (struct sockaddr_dl *)ifa->ifa_addr;
+ sdl->sdl_index = ifp->if_index;
+ }
+ }
+ }
+#endif
IFNET_WLOCK();
TAILQ_INSERT_TAIL(&V_ifnet, ifp, if_link);
More information about the svn-src-stable-8
mailing list