static int eth_drv_del(struct vr_interface *vif) { int ret; hif_ops->hif_del_tap(vif); ret = hif_ops->hif_del(vif); if (vif->vif_flags & VIF_FLAG_SERVICE_IF) vr_interface_service_disable(vif); return ret; }
static int eth_drv_add(struct vr_interface *vif) { int ret = 0; if (!vif->vif_os_idx) return -EINVAL; if (!vif->vif_mtu) { vif->vif_mtu = 9160; if (vif->vif_type == VIF_TYPE_PHYSICAL) vif->vif_mtu = 1514; } vif->vif_set_rewrite = vif_cmn_rewrite; if (vif->vif_type != VIF_TYPE_STATS) { vif->vif_tx = eth_tx; vif->vif_rx = eth_rx; } if (vif->vif_flags & VIF_FLAG_SERVICE_IF) { ret = vr_interface_service_enable(vif); if (ret) goto exit_add; } ret = hif_ops->hif_add(vif); if (ret) goto exit_add; ret = hif_ops->hif_add_tap(vif); if (ret) hif_ops->hif_del(vif); exit_add: if (ret) if (vif->vif_flags & VIF_FLAG_SERVICE_IF) vr_interface_service_disable(vif); return ret; }