* Unregister a network interface cloner. */
| 441 | * Unregister a network interface cloner. |
| 442 | */ |
| 443 | void |
| 444 | if_clone_detach(struct if_clone *ifc) |
| 445 | { |
| 446 | |
| 447 | IF_CLONERS_LOCK(); |
| 448 | LIST_REMOVE(ifc, ifc_list); |
| 449 | V_if_cloners_count--; |
| 450 | IF_CLONERS_UNLOCK(); |
| 451 | |
| 452 | /* Allow all simples to be destroyed */ |
| 453 | if (ifc->ifc_type == SIMPLE) |
| 454 | ifc->ifcs_minifs = 0; |
| 455 | |
| 456 | /* destroy all interfaces for this cloner */ |
| 457 | while (!LIST_EMPTY(&ifc->ifc_iflist)) |
| 458 | if_clone_destroyif(ifc, LIST_FIRST(&ifc->ifc_iflist)); |
| 459 | |
| 460 | IF_CLONE_REMREF(ifc); |
| 461 | } |
| 462 | |
| 463 | static void |
| 464 | if_clone_free(struct if_clone *ifc) |
no test coverage detected