| 229 | #endif /* VIMAGE */ |
| 230 | |
| 231 | static void |
| 232 | me_clone_destroy(struct ifnet *ifp) |
| 233 | { |
| 234 | struct me_softc *sc; |
| 235 | |
| 236 | sx_xlock(&me_ioctl_sx); |
| 237 | sc = ifp->if_softc; |
| 238 | me_delete_tunnel(sc); |
| 239 | bpfdetach(ifp); |
| 240 | if_detach(ifp); |
| 241 | ifp->if_softc = NULL; |
| 242 | sx_xunlock(&me_ioctl_sx); |
| 243 | |
| 244 | ME_WAIT(); |
| 245 | if_free(ifp); |
| 246 | free(sc, M_IFME); |
| 247 | } |
| 248 | |
| 249 | static int |
| 250 | me_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) |
nothing calls this directly
no test coverage detected