Changeset View
Changeset View
Standalone View
Standalone View
head/sys/net/if_vlan.c
Show First 20 Lines • Show All 1,453 Lines • ▼ Show 20 Lines | #undef VLAN_COPY_FLAGS | ||||
NET_EPOCH_ENTER(et); | NET_EPOCH_ENTER(et); | ||||
vlan_capabilities(ifv); | vlan_capabilities(ifv); | ||||
NET_EPOCH_EXIT(et); | NET_EPOCH_EXIT(et); | ||||
/* | /* | ||||
* Set up our interface address to reflect the underlying | * Set up our interface address to reflect the underlying | ||||
* physical interface's. | * physical interface's. | ||||
*/ | */ | ||||
bcopy(IF_LLADDR(p), IF_LLADDR(ifp), p->if_addrlen); | TASK_INIT(&ifv->lladdr_task, 0, vlan_lladdr_fn, ifv); | ||||
((struct sockaddr_dl *)ifp->if_addr->ifa_addr)->sdl_alen = | ((struct sockaddr_dl *)ifp->if_addr->ifa_addr)->sdl_alen = | ||||
p->if_addrlen; | p->if_addrlen; | ||||
TASK_INIT(&ifv->lladdr_task, 0, vlan_lladdr_fn, ifv); | /* | ||||
* Do not schedule link address update if it was the same | |||||
* as previous parent's. This helps avoid updating for each | |||||
* associated llentry. | |||||
*/ | |||||
if (memcmp(IF_LLADDR(p), IF_LLADDR(ifp), p->if_addrlen) != 0) { | |||||
bcopy(IF_LLADDR(p), IF_LLADDR(ifp), p->if_addrlen); | |||||
taskqueue_enqueue(taskqueue_thread, &ifv->lladdr_task); | |||||
} | |||||
/* We are ready for operation now. */ | /* We are ready for operation now. */ | ||||
ifp->if_drv_flags |= IFF_DRV_RUNNING; | ifp->if_drv_flags |= IFF_DRV_RUNNING; | ||||
/* Update flags on the parent, if necessary. */ | /* Update flags on the parent, if necessary. */ | ||||
vlan_setflags(ifp, 1); | vlan_setflags(ifp, 1); | ||||
/* | /* | ||||
▲ Show 20 Lines • Show All 597 Lines • Show Last 20 Lines |