/* * -------------------------------------------------------------------------- * This function activates the switch by initializing it with all the runtime * state. First it queries all of the MAC addresses set as custom switch policy * to allow sends from, and adds tme to the property list. Then it queries the * NIC list and verifies it can support all of the NICs currently connected to * the switch, and adds the NICs to the NIC list. * -------------------------------------------------------------------------- */ static NDIS_STATUS OvsActivateSwitch(POVS_SWITCH_CONTEXT switchContext) { NDIS_STATUS status; ASSERT(!switchContext->isActivated); OVS_LOG_TRACE("Enter: activate switch %p, dpNo: %ld", switchContext, switchContext->dpNo); status = OvsAddConfiguredSwitchPorts(switchContext); if (status != NDIS_STATUS_SUCCESS) { OVS_LOG_WARN("Failed to add configured switch ports"); goto cleanup; } status = OvsInitConfiguredSwitchNics(switchContext); if (status != NDIS_STATUS_SUCCESS) { OVS_LOG_WARN("Failed to add configured vports"); OvsClearAllSwitchVports(switchContext); goto cleanup; } switchContext->isActivated = TRUE; OvsPostEvent(OVS_DEFAULT_PORT_NO, OVS_DEFAULT_EVENT_STATUS); cleanup: OVS_LOG_TRACE("Exit: activate switch:%p, isActivated: %s, status = %lx", switchContext, (switchContext->isActivated ? "TRUE" : "FALSE"), status); return status; }
/* * -------------------------------------------------------------------------- * This function deletes the switch by freeing all memory previously allocated. * XXX need synchronization with other path. * -------------------------------------------------------------------------- */ VOID OvsDeleteSwitch(POVS_SWITCH_CONTEXT switchContext) { UINT32 dpNo = switchContext->dpNo; OVS_LOG_TRACE("Enter: switchContext:%p", switchContext); OvsTunnelFilterUninitialize(gOvsExtDriverObject); OvsClearAllSwitchVports(switchContext); OvsCleanupSwitchContext(switchContext); OvsFreeMemory(switchContext); OVS_LOG_TRACE("Exit: deleted switch %p dpNo: %d", switchContext, dpNo); }
/* * -------------------------------------------------------------------------- * This function deletes the switch by freeing all memory previously allocated. * XXX need synchronization with other path. * -------------------------------------------------------------------------- */ VOID OvsDeleteSwitch(POVS_SWITCH_CONTEXT switchContext) { UINT32 dpNo = (UINT32) -1; OVS_LOG_TRACE("Enter: switchContext:%p", switchContext); if (switchContext) { dpNo = switchContext->dpNo; OvsClearAllSwitchVports(switchContext); OvsUninitTunnelFilter(gOvsExtDriverObject); OvsUninitSwitchContext(switchContext); } OVS_LOG_TRACE("Exit: deleted switch %p dpNo: %d", switchContext, dpNo); }