1 //Written in the D programming language 2 3 /++ 4 D header file for Linux's linux/if_arp.h. 5 6 Copyright: Copyright 2023 7 License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0). 8 Authors: $(HTTP jmdavisprog.com, Jonathan M Davis) 9 +/ 10 module core.sys.linux.linux.if_arp; 11 12 version (linux): 13 extern(C): 14 @nogc: 15 nothrow: 16 17 import core.sys.posix.net.if_ : IF_NAMESIZE; 18 import core.sys.posix.sys.socket : sockaddr; 19 20 enum : ushort 21 { 22 ARPHRD_NETROM = 0, 23 ARPHRD_ETHER = 1, 24 ARPHRD_EETHER = 2, 25 ARPHRD_AX25 = 3, 26 ARPHRD_PRONET = 4, 27 ARPHRD_CHAOS = 5, 28 ARPHRD_IEEE802 = 6, 29 ARPHRD_ARCNET = 7, 30 ARPHRD_APPLETLK = 8, 31 ARPHRD_DLCI =15, 32 ARPHRD_ATM =19, 33 ARPHRD_METRICOM = 23, 34 ARPHRD_IEEE1394 = 24, 35 ARPHRD_EUI64 = 27, 36 ARPHRD_INFINIBAND = 32, 37 38 ARPHRD_SLIP = 256, 39 ARPHRD_CSLIP = 257, 40 ARPHRD_SLIP6 = 258, 41 ARPHRD_CSLIP6 = 259, 42 ARPHRD_RSRVD = 260, 43 ARPHRD_ADAPT = 264, 44 ARPHRD_ROSE = 270, 45 ARPHRD_X25 = 271, 46 ARPHRD_HWX25 = 272, 47 ARPHRD_CAN = 280, 48 ARPHRD_MCTP = 290, 49 ARPHRD_PPP = 512, 50 ARPHRD_CISCO = 513, 51 ARPHRD_HDLC = ARPHRD_CISCO, 52 ARPHRD_LAPB = 516, 53 ARPHRD_DDCMP = 517, 54 ARPHRD_RAWHDLC = 518, 55 ARPHRD_RAWIP = 519, 56 57 ARPHRD_TUNNEL = 768, 58 ARPHRD_TUNNEL6 = 769, 59 ARPHRD_FRAD = 770, 60 ARPHRD_SKIP = 771, 61 ARPHRD_LOOPBACK = 772, 62 ARPHRD_LOCALTLK = 773, 63 ARPHRD_FDDI = 774, 64 ARPHRD_BIF = 775, 65 ARPHRD_SIT = 776, 66 ARPHRD_IPDDP = 777, 67 ARPHRD_IPGRE = 778, 68 ARPHRD_PIMREG = 779, 69 ARPHRD_HIPPI = 780, 70 ARPHRD_ASH = 781, 71 ARPHRD_ECONET = 782, 72 ARPHRD_IRDA = 783, 73 74 ARPHRD_FCPP = 784, 75 ARPHRD_FCAL = 785, 76 ARPHRD_FCPL = 786, 77 ARPHRD_FCFABRIC = 787, 78 79 ARPHRD_IEEE802_TR = 800, 80 ARPHRD_IEEE80211 = 801, 81 ARPHRD_IEEE80211_PRISM = 802, 82 ARPHRD_IEEE80211_RADIOTAP = 803, 83 ARPHRD_IEEE802154 = 804, 84 ARPHRD_IEEE802154_MONITOR = 805, 85 86 ARPHRD_PHONET = 820, 87 ARPHRD_PHONET_PIPE = 821, 88 ARPHRD_CAIF = 822, 89 ARPHRD_IP6GRE = 823, 90 ARPHRD_NETLINK = 824, 91 ARPHRD_6LOWPAN = 825, 92 ARPHRD_VSOCKMON = 826, 93 94 ARPHRD_VOID = 0xFFFF, 95 ARPHRD_NONE = 0xFFFE, 96 } 97 98 enum : ushort 99 { 100 ARPOP_REQUEST = 1, 101 ARPOP_REPLY = 2, 102 ARPOP_RREQUEST = 3, 103 ARPOP_RREPLY = 4, 104 ARPOP_InREQUEST = 8, 105 ARPOP_InREPLY = 9, 106 ARPOP_NAK = 10, 107 } 108 109 struct arpreq 110 { 111 sockaddr arp_pa; 112 sockaddr arp_ha; 113 int arp_flags; 114 sockaddr arp_netmask; 115 char[IF_NAMESIZE] arp_dev; 116 } 117 118 enum 119 { 120 ATF_COM = 0x02, 121 ATF_PERM = 0x04, 122 ATF_PUBL = 0x08, 123 ATF_USETRAILERS = 0x10, 124 ATF_NETMASK = 0x20, 125 126 ATF_DONTPUB = 0x40, 127 } 128 129 struct arphdr 130 { 131 ushort ar_hrd; 132 ushort ar_pro; 133 ubyte ar_hln; 134 ubyte ar_pln; 135 ushort ar_op; 136 }