Lock the interface address list while iterating a network interface's
address list when searching for a link-layer address to use during uuid generation. MFC after: 2 weeks
This commit is contained in:
parent
22037b2d2c
commit
e5a9a8ead8
@ -101,16 +101,19 @@ uuid_node(uint16_t *node)
|
||||
IFNET_RLOCK();
|
||||
TAILQ_FOREACH(ifp, &V_ifnet, if_link) {
|
||||
/* Walk the address list */
|
||||
IF_ADDR_LOCK(ifp);
|
||||
TAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) {
|
||||
sdl = (struct sockaddr_dl*)ifa->ifa_addr;
|
||||
if (sdl != NULL && sdl->sdl_family == AF_LINK &&
|
||||
sdl->sdl_type == IFT_ETHER) {
|
||||
/* Got a MAC address. */
|
||||
bcopy(LLADDR(sdl), node, UUID_NODE_LEN);
|
||||
IF_ADDR_UNLOCK(ifp);
|
||||
IFNET_RUNLOCK();
|
||||
return;
|
||||
}
|
||||
}
|
||||
IF_ADDR_UNLOCK(ifp);
|
||||
}
|
||||
IFNET_RUNLOCK();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user