diff options
-rw-r--r-- | datapath-windows/ovsext/TunnelFilter.c | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/datapath-windows/ovsext/TunnelFilter.c b/datapath-windows/ovsext/TunnelFilter.c index 786545186..00e57c325 100644 --- a/datapath-windows/ovsext/TunnelFilter.c +++ b/datapath-windows/ovsext/TunnelFilter.c @@ -825,20 +825,24 @@ OvsInitTunnelFilter(PDRIVER_OBJECT driverObject, PVOID deviceObject) { NTSTATUS status = STATUS_SUCCESS; - status = OvsSubscribeTunnelInitBfeStateChanges(driverObject, deviceObject); - if (NT_SUCCESS(status)) { - if (FWPM_SERVICE_RUNNING == FwpmBfeStateGet()) { - status = OvsTunnelFilterInitialize(driverObject); - if (!NT_SUCCESS(status)) { - /* XXX: We need to decide what actions to take in case of - * failure to initialize tunnel filter. */ - ASSERT(status == NDIS_STATUS_SUCCESS); - OVS_LOG_ERROR( - "Failed to initialize tunnel filter, status: %x.", - status); + if (deviceObject) { + status = OvsSubscribeTunnelInitBfeStateChanges(driverObject, deviceObject); + if (NT_SUCCESS(status)) { + if (FWPM_SERVICE_RUNNING == FwpmBfeStateGet()) { + status = OvsTunnelFilterInitialize(driverObject); + if (!NT_SUCCESS(status)) { + /* XXX: We need to decide what actions to take in case of + * failure to initialize tunnel filter. */ + ASSERT(status == NDIS_STATUS_SUCCESS); + OVS_LOG_ERROR( + "Failed to initialize tunnel filter, status: %x.", + status); + } + OvsUnsubscribeTunnelInitBfeStateChanges(); } - OvsUnsubscribeTunnelInitBfeStateChanges(); } + } else { + status = OvsTunnelFilterInitialize(driverObject); } return status; |