Changeset View
Changeset View
Standalone View
Standalone View
sys/net/if_tuntap.c
| Show First 20 Lines • Show All 701 Lines • ▼ Show 20 Lines | |||||
| tun_uninit(const void *unused __unused) | tun_uninit(const void *unused __unused) | ||||
| { | { | ||||
| struct tuntap_driver *drv; | struct tuntap_driver *drv; | ||||
| struct tuntap_softc *tp; | struct tuntap_softc *tp; | ||||
| int i; | int i; | ||||
| EVENTHANDLER_DEREGISTER(ifnet_arrival_event, arrival_tag); | EVENTHANDLER_DEREGISTER(ifnet_arrival_event, arrival_tag); | ||||
| EVENTHANDLER_DEREGISTER(dev_clone, clone_tag); | EVENTHANDLER_DEREGISTER(dev_clone, clone_tag); | ||||
| drain_dev_clone_events(); | |||||
| mtx_lock(&tunmtx); | mtx_lock(&tunmtx); | ||||
| while ((tp = TAILQ_FIRST(&tunhead)) != NULL) { | while ((tp = TAILQ_FIRST(&tunhead)) != NULL) { | ||||
| TAILQ_REMOVE(&tunhead, tp, tun_list); | TAILQ_REMOVE(&tunhead, tp, tun_list); | ||||
| mtx_unlock(&tunmtx); | mtx_unlock(&tunmtx); | ||||
| tun_destroy(tp); | tun_destroy(tp); | ||||
| mtx_lock(&tunmtx); | mtx_lock(&tunmtx); | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 1,294 Lines • Show Last 20 Lines | |||||