MCPcopy Create free account
hub / github.com/F-Stack/f-stack / del_vif_locked

Function del_vif_locked

freebsd/netinet/ip_mroute.c:943–975  ·  view source on GitHub ↗

* Delete a vif from the vif table */

Source from the content-addressed store, hash-verified

941 * Delete a vif from the vif table
942 */
943static int
944del_vif_locked(vifi_t vifi)
945{
946 struct vif *vifp;
947
948 VIF_LOCK_ASSERT();
949
950 if (vifi >= V_numvifs) {
951 return EINVAL;
952 }
953 vifp = &V_viftable[vifi];
954 if (in_nullhost(vifp->v_lcl_addr)) {
955 return EADDRNOTAVAIL;
956 }
957
958 if (!(vifp->v_flags & (VIFF_TUNNEL | VIFF_REGISTER)))
959 if_allmulti(vifp->v_ifp, 0);
960
961 if (vifp->v_flags & VIFF_REGISTER)
962 V_reg_vif_num = VIFI_INVALID;
963
964 bzero((caddr_t)vifp, sizeof (*vifp));
965
966 CTR2(KTR_IPMF, "%s: delete vif %d", __func__, (int)vifi);
967
968 /* Adjust numvifs down */
969 for (vifi = V_numvifs; vifi > 0; vifi--)
970 if (!in_nullhost(V_viftable[vifi-1].v_lcl_addr))
971 break;
972 V_numvifs = vifi;
973
974 return 0;
975}
976
977static int
978del_vif(vifi_t vifi)

Callers 2

if_detached_eventFunction · 0.85
del_vifFunction · 0.85

Calls 2

if_allmultiFunction · 0.85
bzeroFunction · 0.85

Tested by

no test coverage detected