private bool AreAnyMapiNicsUp(AmNetworkMonitor.Node node) { int num = 0; foreach (AmNetworkMonitor.Nic nic in node.MapiNics) { num++; AmNetInterfaceState nicState = this.GetNicState(nic.Name); switch (nicState) { case AmNetInterfaceState.Unavailable: case AmNetInterfaceState.Failed: case AmNetInterfaceState.Unreachable: AmNetworkMonitor.Tracer.TraceError <string, AmNetInterfaceState>(0L, "Nic '{0}' is {1}.", nic.Name, nicState); break; case AmNetInterfaceState.Up: return(true); default: AmNetworkMonitor.Tracer.TraceError <string, AmNetInterfaceState>(0L, "Nic '{0}' is {1}.", nic.Name, nicState); return(true); } } AmNetworkMonitor.Tracer.TraceError <AmServerName, int>(0L, "Node {0} has {1} MAPI nics. None appear usable.", node.Name, num); return(false); }
private void ProcessNicEvent(AmClusterEventInfo cei) { Dictionary <string, AmNetworkMonitor.Nic> nicTable = this.m_nicTable; IAmCluster cluster = this.GetCluster(); if (nicTable == null || cluster == null) { AmNetworkMonitor.Tracer.TraceError(0L, "Not yet initialized. Ignoring event"); return; } AmNetworkMonitor.Nic nic; if (!nicTable.TryGetValue(cei.ObjectName, out nic)) { this.TriggerClusterRefresh("nic not found"); return; } AmNetInterfaceState nicState = this.GetNicState(cei.ObjectName); switch (nicState) { case AmNetInterfaceState.Unavailable: AmNetworkMonitor.Tracer.TraceError <string, AmNetInterfaceState>(0L, "MAPI NIC '{0}' is {1}.", cei.ObjectName, nicState); return; case AmNetInterfaceState.Failed: case AmNetInterfaceState.Unreachable: { AmNetworkMonitor.Tracer.TraceError <string, AmNetInterfaceState>(0L, "MAPI NIC '{0}' is {1}.", cei.ObjectName, nicState); AmEvtMapiNetworkFailure amEvtMapiNetworkFailure = new AmEvtMapiNetworkFailure(nic.Node.Name); amEvtMapiNetworkFailure.Notify(true); return; } case AmNetInterfaceState.Up: AmNetworkMonitor.Tracer.TraceDebug <string>(0L, "MAPI NIC '{0}' is Up.", cei.ObjectName); if (nic.Node.Name.IsLocalComputerName) { AmClusterNodeNetworkStatus amClusterNodeNetworkStatus = new AmClusterNodeNetworkStatus(); Exception ex = AmClusterNodeStatusAccessor.Write(cluster, nic.Node.Name, amClusterNodeNetworkStatus); if (ex != null) { ReplayCrimsonEvents.AmNodeStatusUpdateFailed.Log <string, string>(amClusterNodeNetworkStatus.ToString(), ex.Message); return; } } break; default: AmNetworkMonitor.Tracer.TraceError <AmNetInterfaceState, string>(0L, "Unexpected NIC state {0} for {1}", nicState, cei.ObjectName); break; } }
internal void CopyClusterNicState(AmNetInterfaceState clusterNicState) { this.ClusterNicState = NetworkEndPoint.MapNicState(clusterNicState); if (this.ClusterNicState != DatabaseAvailabilityGroupNetworkInterface.InterfaceState.Up && this.ClusterNicState != DatabaseAvailabilityGroupNetworkInterface.InterfaceState.Unreachable) { NetworkManager.TraceError("NIC {0} is down: {1}", new object[] { this.IPAddress, clusterNicState }); this.Usable = false; } }
private AmNetInterfaceState GetNicState(string nicName) { AmNetInterfaceState result = AmNetInterfaceState.Unknown; IAmCluster cluster = this.GetCluster(); if (cluster != null) { Exception ex; result = cluster.GetNetInterfaceState(nicName, out ex); if (ex != null) { AmNetworkMonitor.Tracer.TraceError <string, Exception>(0L, "Failed to get state for nic '{0}': {1}", nicName, ex); this.TriggerClusterRefresh("GetNicState failed"); } } return(result); }
// Token: 0x06000198 RID: 408 RVA: 0x000074A4 File Offset: 0x000056A4 internal AmNetInterfaceState GetState(bool isThrowIfUnknown) { AmNetInterfaceState clusterNetInterfaceState = ClusapiMethods.GetClusterNetInterfaceState(this.Handle); if (clusterNetInterfaceState == AmNetInterfaceState.Unknown) { int lastWin32Error = Marshal.GetLastWin32Error(); Exception ex = new Win32Exception(lastWin32Error); AmTrace.Debug("GetClusterNetInterfaceState() returned error (rc={0}, message={1})", new object[] { lastWin32Error, ex }); if (isThrowIfUnknown) { throw AmExceptionHelper.ConstructClusterApiException(lastWin32Error, "GetClusterNetInterfaceState()", new object[0]); } } return(clusterNetInterfaceState); }
internal static DatabaseAvailabilityGroupNetworkInterface.InterfaceState MapNicState(AmNetInterfaceState clusterNicState) { switch (clusterNicState) { case AmNetInterfaceState.Unavailable: return(DatabaseAvailabilityGroupNetworkInterface.InterfaceState.Unavailable); case AmNetInterfaceState.Failed: return(DatabaseAvailabilityGroupNetworkInterface.InterfaceState.Failed); case AmNetInterfaceState.Unreachable: return(DatabaseAvailabilityGroupNetworkInterface.InterfaceState.Unreachable); case AmNetInterfaceState.Up: return(DatabaseAvailabilityGroupNetworkInterface.InterfaceState.Up); default: return(DatabaseAvailabilityGroupNetworkInterface.InterfaceState.Unknown); } }
// Token: 0x06000197 RID: 407 RVA: 0x00007498 File Offset: 0x00005698 internal static bool IsNicUsable(AmNetInterfaceState state) { return(state == AmNetInterfaceState.Up || state == AmNetInterfaceState.Unreachable); }