public static NetworkInterface[] GetAllNetworkInterfaces() { if (NetworkInterface.runningOnUnix) { bool flag = false; IntPtr intPtr = Marshal.AllocHGlobal(8192); if (NetworkInterface.uname(intPtr) == 0) { string a = Marshal.PtrToStringAnsi(intPtr); if (a == "Darwin") { flag = true; } } Marshal.FreeHGlobal(intPtr); try { if (flag) { return(MacOsNetworkInterface.ImplGetAllNetworkInterfaces()); } return(LinuxNetworkInterface.ImplGetAllNetworkInterfaces()); } catch (SystemException ex) { throw ex; } catch { return(new NetworkInterface[0]); } } if (Environment.OSVersion.Version >= NetworkInterface.windowsVer51) { return(Win32NetworkInterface2.ImplGetAllNetworkInterfaces()); } return(new NetworkInterface[0]); }