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)
This commit is contained in:
parent
efa17b0037
commit
46cd60482c
15
sys/net/if.c
15
sys/net/if.c
@ -570,6 +570,21 @@ if_attach_internal(struct ifnet *ifp, int vmove)
|
||||
/* 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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user