1 // Licensed to the .NET Foundation under one or more agreements. 2 // The .NET Foundation licenses this file to you under the MIT license. 3 // See the LICENSE file in the project root for more information. 4 5 #include "pal_config.h" 6 #include "pal_maphardwaretype.h" 7 8 #include <sys/socket.h> 9 #include <sys/types.h> 10 11 #if defined(AF_PACKET) 12 #include <linux/if_packet.h> 13 #include <linux/if_arp.h> 14 #elif defined(AF_LINK) 15 #include <net/if_dl.h> 16 #include <net/if_types.h> 17 #else 18 #error System must have AF_PACKET or AF_LINK. 19 #endif 20 MapHardwareType(uint16_t nativeType)21enum NetworkInterfaceType MapHardwareType(uint16_t nativeType) 22 { 23 #if defined(AF_PACKET) 24 switch (nativeType) 25 { 26 case ARPHRD_ETHER: 27 case ARPHRD_EETHER: 28 return NetworkInterfaceType_Ethernet; 29 case ARPHRD_PRONET: 30 return NetworkInterfaceType_TokenRing; 31 case ARPHRD_ATM: 32 return NetworkInterfaceType_Atm; 33 case ARPHRD_SLIP: 34 case ARPHRD_CSLIP: 35 case ARPHRD_SLIP6: 36 case ARPHRD_CSLIP6: 37 return NetworkInterfaceType_Slip; 38 case ARPHRD_PPP: 39 return NetworkInterfaceType_Ppp; 40 case ARPHRD_TUNNEL: 41 case ARPHRD_TUNNEL6: 42 return NetworkInterfaceType_Tunnel; 43 case ARPHRD_LOOPBACK: 44 return NetworkInterfaceType_Loopback; 45 case ARPHRD_FDDI: 46 return NetworkInterfaceType_Fddi; 47 case ARPHRD_IEEE80211: 48 case ARPHRD_IEEE80211_PRISM: 49 case ARPHRD_IEEE80211_RADIOTAP: 50 return NetworkInterfaceType_Wireless80211; 51 default: 52 return NetworkInterfaceType_Unknown; 53 } 54 #elif defined(AF_LINK) 55 switch (nativeType) 56 { 57 case IFT_ETHER: 58 return NetworkInterfaceType_Ethernet; 59 case IFT_ISO88025: 60 return NetworkInterfaceType_TokenRing; 61 case IFT_FDDI: 62 return NetworkInterfaceType_Fddi; 63 case IFT_ISDNBASIC: 64 return NetworkInterfaceType_Isdn; 65 case IFT_ISDNPRIMARY: 66 return NetworkInterfaceType_PrimaryIsdn; 67 case IFT_PPP: 68 return NetworkInterfaceType_Ppp; 69 case IFT_LOOP: 70 return NetworkInterfaceType_Loopback; 71 case IFT_XETHER: 72 return NetworkInterfaceType_Ethernet3Megabit; 73 case IFT_SLIP: 74 return NetworkInterfaceType_Slip; 75 case IFT_ATM: 76 return NetworkInterfaceType_Atm; 77 case IFT_MODEM: 78 return NetworkInterfaceType_GenericModem; 79 case IFT_IEEE1394: 80 return NetworkInterfaceType_HighPerformanceSerialBus; 81 default: 82 return NetworkInterfaceType_Unknown; 83 } 84 #endif 85 } 86