9 #ifndef _NET_ETHERNET_H_ 10 #define _NET_ETHERNET_H_ 15 #define ETHER_ADDR_LEN 6 16 #define ETHER_TYPE_LEN 2 17 #define ETHER_CRC_LEN 4 18 #define ETHER_HDR_LEN (ETHER_ADDR_LEN*2+ETHER_TYPE_LEN) 19 #define ETHER_MIN_LEN 64 20 #define ETHER_MAX_LEN 1518 21 #define ETHER_MAX_LEN_JUMBO 9018 23 #define ETHER_VLAN_ENCAP_LEN 4 36 #define ETHER_MAX_FRAME(ifp, etype, hasfcs) \ 37 ((ifp)->if_mtu + ETHER_HDR_LEN + \ 38 ((hasfcs) ? ETHER_CRC_LEN : 0) + \ 39 (((etype) == ETHERTYPE_VLAN) ? ETHER_VLAN_ENCAP_LEN : 0)) 44 #define M_HASFCS M_PROTO5 49 #define ETHER_CRC_POLY_LE 0xedb88320 50 #define ETHER_CRC_POLY_BE 0x04c11db6 55 #define ETHER_IS_VALID_LEN(foo) \ 56 ((foo) >= ETHER_MIN_LEN && (foo) <= ETHER_MAX_LEN) 62 u_char ether_dhost[ETHER_ADDR_LEN];
63 u_char ether_shost[ETHER_ADDR_LEN];
71 u_char octet[ETHER_ADDR_LEN];
74 #define ETHER_IS_MULTICAST(addr) (*(addr) & 0x01) 81 #define ETHERTYPE_8023 0x0004 83 #define ETHERTYPE_PUP 0x0200 84 #define ETHERTYPE_PUPAT 0x0200 85 #define ETHERTYPE_SPRITE 0x0500 87 #define ETHERTYPE_NS 0x0600 88 #define ETHERTYPE_NSAT 0x0601 89 #define ETHERTYPE_DLOG1 0x0660 90 #define ETHERTYPE_DLOG2 0x0661 91 #define ETHERTYPE_IP 0x0800 92 #define ETHERTYPE_X75 0x0801 93 #define ETHERTYPE_NBS 0x0802 94 #define ETHERTYPE_ECMA 0x0803 95 #define ETHERTYPE_CHAOS 0x0804 96 #define ETHERTYPE_X25 0x0805 97 #define ETHERTYPE_ARP 0x0806 98 #define ETHERTYPE_NSCOMPAT 0x0807 99 #define ETHERTYPE_FRARP 0x0808 102 #define ETHERTYPE_UBDEBUG 0x0900 103 #define ETHERTYPE_IEEEPUP 0x0A00 104 #define ETHERTYPE_IEEEPUPAT 0x0A01 105 #define ETHERTYPE_VINES 0x0BAD 106 #define ETHERTYPE_VINESLOOP 0x0BAE 107 #define ETHERTYPE_VINESECHO 0x0BAF 115 #define ETHERTYPE_TRAIL 0x1000 116 #define ETHERTYPE_NTRAILER 16 118 #define ETHERTYPE_DCA 0x1234 119 #define ETHERTYPE_VALID 0x1600 120 #define ETHERTYPE_DOGFIGHT 0x1989 121 #define ETHERTYPE_RCL 0x1995 125 #define ETHERTYPE_NBPVCD 0x3C00 126 #define ETHERTYPE_NBPSCD 0x3C01 127 #define ETHERTYPE_NBPCREQ 0x3C02 128 #define ETHERTYPE_NBPCRSP 0x3C03 129 #define ETHERTYPE_NBPCC 0x3C04 130 #define ETHERTYPE_NBPCLREQ 0x3C05 131 #define ETHERTYPE_NBPCLRSP 0x3C06 132 #define ETHERTYPE_NBPDG 0x3C07 133 #define ETHERTYPE_NBPDGB 0x3C08 134 #define ETHERTYPE_NBPCLAIM 0x3C09 135 #define ETHERTYPE_NBPDLTE 0x3C0A 136 #define ETHERTYPE_NBPRAS 0x3C0B 137 #define ETHERTYPE_NBPRAR 0x3C0C 138 #define ETHERTYPE_NBPRST 0x3C0D 140 #define ETHERTYPE_PCS 0x4242 141 #define ETHERTYPE_IMLBLDIAG 0x424C 142 #define ETHERTYPE_DIDDLE 0x4321 143 #define ETHERTYPE_IMLBL 0x4C42 144 #define ETHERTYPE_SIMNET 0x5208 145 #define ETHERTYPE_DECEXPER 0x6000 146 #define ETHERTYPE_MOPDL 0x6001 147 #define ETHERTYPE_MOPRC 0x6002 148 #define ETHERTYPE_DECnet 0x6003 149 #define ETHERTYPE_DN ETHERTYPE_DECnet 150 #define ETHERTYPE_LAT 0x6004 151 #define ETHERTYPE_DECDIAG 0x6005 152 #define ETHERTYPE_DECCUST 0x6006 153 #define ETHERTYPE_SCA 0x6007 154 #define ETHERTYPE_AMBER 0x6008 155 #define ETHERTYPE_DECMUMPS 0x6009 157 #define ETHERTYPE_TRANSETHER 0x6558 158 #define ETHERTYPE_RAWFR 0x6559 159 #define ETHERTYPE_UBDL 0x7000 160 #define ETHERTYPE_UBNIU 0x7001 161 #define ETHERTYPE_UBDIAGLOOP 0x7002 162 #define ETHERTYPE_UBNMC 0x7003 163 #define ETHERTYPE_UBBST 0x7005 164 #define ETHERTYPE_OS9 0x7007 165 #define ETHERTYPE_OS9NET 0x7009 167 #define ETHERTYPE_RACAL 0x7030 168 #define ETHERTYPE_PRIMENTS 0x7031 169 #define ETHERTYPE_CABLETRON 0x7034 170 #define ETHERTYPE_CRONUSVLN 0x8003 171 #define ETHERTYPE_CRONUS 0x8004 172 #define ETHERTYPE_HP 0x8005 173 #define ETHERTYPE_NESTAR 0x8006 174 #define ETHERTYPE_ATTSTANFORD 0x8008 175 #define ETHERTYPE_EXCELAN 0x8010 176 #define ETHERTYPE_SG_DIAG 0x8013 177 #define ETHERTYPE_SG_NETGAMES 0x8014 178 #define ETHERTYPE_SG_RESV 0x8015 179 #define ETHERTYPE_SG_BOUNCE 0x8016 180 #define ETHERTYPE_APOLLODOMAIN 0x8019 181 #define ETHERTYPE_TYMSHARE 0x802E 182 #define ETHERTYPE_TIGAN 0x802F 183 #define ETHERTYPE_REVARP 0x8035 184 #define ETHERTYPE_AEONIC 0x8036 185 #define ETHERTYPE_IPXNEW 0x8037 186 #define ETHERTYPE_LANBRIDGE 0x8038 187 #define ETHERTYPE_DSMD 0x8039 188 #define ETHERTYPE_ARGONAUT 0x803A 189 #define ETHERTYPE_VAXELN 0x803B 190 #define ETHERTYPE_DECDNS 0x803C 191 #define ETHERTYPE_ENCRYPT 0x803D 192 #define ETHERTYPE_DECDTS 0x803E 193 #define ETHERTYPE_DECLTM 0x803F 194 #define ETHERTYPE_DECNETBIOS 0x8040 195 #define ETHERTYPE_DECLAST 0x8041 197 #define ETHERTYPE_PLANNING 0x8044 199 #define ETHERTYPE_DECAM 0x8048 200 #define ETHERTYPE_EXPERDATA 0x8049 201 #define ETHERTYPE_VEXP 0x805B 202 #define ETHERTYPE_VPROD 0x805C 203 #define ETHERTYPE_ES 0x805D 204 #define ETHERTYPE_LITTLE 0x8060 205 #define ETHERTYPE_COUNTERPOINT 0x8062 207 #define ETHERTYPE_VEECO 0x8067 208 #define ETHERTYPE_GENDYN 0x8068 209 #define ETHERTYPE_ATT 0x8069 210 #define ETHERTYPE_AUTOPHON 0x806A 211 #define ETHERTYPE_COMDESIGN 0x806C 212 #define ETHERTYPE_COMPUGRAPHIC 0x806D 214 #define ETHERTYPE_MATRA 0x807A 215 #define ETHERTYPE_DDE 0x807B 216 #define ETHERTYPE_MERIT 0x807C 218 #define ETHERTYPE_VLTLMAN 0x8080 221 #define ETHERTYPE_ATALK 0x809B 222 #define ETHERTYPE_AT ETHERTYPE_ATALK 223 #define ETHERTYPE_APPLETALK ETHERTYPE_ATALK 225 #define ETHERTYPE_SPIDER 0x809F 230 #define ETHERTYPE_PACER 0x80C6 231 #define ETHERTYPE_APPLITEK 0x80C7 236 #define ETHERTYPE_SNA 0x80D5 237 #define ETHERTYPE_VARIAN 0x80DD 241 #define ETHERTYPE_RETIX 0x80F2 242 #define ETHERTYPE_AARP 0x80F3 244 #define ETHERTYPE_APOLLO 0x80F7 245 #define ETHERTYPE_VLAN 0x8100 247 #define ETHERTYPE_BOFL 0x8102 248 #define ETHERTYPE_WELLFLEET 0x8103 250 #define ETHERTYPE_TALARIS 0x812B 251 #define ETHERTYPE_WATERLOO 0x8130 252 #define ETHERTYPE_HAYES 0x8130 253 #define ETHERTYPE_VGLAB 0x8131 255 #define ETHERTYPE_IPX 0x8137 256 #define ETHERTYPE_NOVELL 0x8138 258 #define ETHERTYPE_MUMPS 0x813F 259 #define ETHERTYPE_AMOEBA 0x8145 260 #define ETHERTYPE_FLIP 0x8146 261 #define ETHERTYPE_VURESERVED 0x8147 262 #define ETHERTYPE_LOGICRAFT 0x8148 263 #define ETHERTYPE_NCD 0x8149 264 #define ETHERTYPE_ALPHA 0x814A 265 #define ETHERTYPE_SNMP 0x814C 267 #define ETHERTYPE_TEC 0x814F 268 #define ETHERTYPE_RATIONAL 0x8150 272 #define ETHERTYPE_XTP 0x817D 273 #define ETHERTYPE_SGITW 0x817E 274 #define ETHERTYPE_HIPPI_FP 0x8180 275 #define ETHERTYPE_STP 0x8181 278 #define ETHERTYPE_MOTOROLA 0x818D 279 #define ETHERTYPE_NETBEUI 0x8191 296 #define ETHERTYPE_ACCTON 0x8390 297 #define ETHERTYPE_TALARISMC 0x852B 298 #define ETHERTYPE_KALPANA 0x8582 302 #define ETHERTYPE_SECTRA 0x86DB 303 #define ETHERTYPE_IPV6 0x86DD 304 #define ETHERTYPE_DELTACON 0x86DE 305 #define ETHERTYPE_ATOMIC 0x86DF 308 #define ETHERTYPE_RDP 0x8739 309 #define ETHERTYPE_MICP 0x873A 311 #define ETHERTYPE_TCPCOMP 0x876B 312 #define ETHERTYPE_IPAS 0x876C 313 #define ETHERTYPE_SECUREDATA 0x876D 314 #define ETHERTYPE_FLOWCONTROL 0x8808 315 #define ETHERTYPE_PPP 0x880B 316 #define ETHERTYPE_HITACHI 0x8820 317 #define ETHERTYPE_MPLS 0x8847 318 #define ETHERTYPE_MPLS_MCAST 0x8848 319 #define ETHERTYPE_AXIS 0x8856 320 #define ETHERTYPE_PPPOEDISC 0x8863 321 #define ETHERTYPE_PPPOE 0x8864 322 #define ETHERTYPE_LANPROBE 0x8888 323 #define ETHERTYPE_PAE 0x888e 324 #define ETHERTYPE_LOOPBACK 0x9000 325 #define ETHERTYPE_LBACK ETHERTYPE_LOOPBACK 326 #define ETHERTYPE_XNSSM 0x9001 327 #define ETHERTYPE_TCPSM 0x9002 328 #define ETHERTYPE_BCLOOP 0x9003 329 #define ETHERTYPE_DEBNI 0xAAAA 330 #define ETHERTYPE_SONIX 0xFAF5 331 #define ETHERTYPE_VITAL 0xFF00 334 #define ETHERTYPE_MAX 0xFFFF 341 #define ETHERTYPE_TRAIL 0x1000 342 #define ETHERTYPE_NTRAILER 16 344 #define ETHERMTU (ETHER_MAX_LEN-ETHER_HDR_LEN-ETHER_CRC_LEN) 345 #define ETHERMIN (ETHER_MIN_LEN-ETHER_HDR_LEN-ETHER_CRC_LEN) 346 #define ETHERMTU_JUMBO (ETHER_MAX_LEN_JUMBO - ETHER_HDR_LEN - ETHER_CRC_LEN) 355 extern uint32_t ether_crc32_le(
const uint8_t *,
size_t);
356 extern uint32_t ether_crc32_be(
const uint8_t *,
size_t);
357 extern void ether_demux(
struct ifnet *,
struct mbuf *);
358 extern void ether_ifattach(
struct ifnet *);
359 extern void ether_ifdetach(
struct ifnet *);
360 extern int ether_ioctl(
struct ifnet *, ioctl_command_t, caddr_t);
362 extern int ether_output(
struct ifnet *,
364 extern int ether_output_frame(
struct ifnet *,
struct mbuf *);
365 extern char *ether_sprintf(
const u_int8_t *);
369 #include <sys/cdefs.h> 376 int ether_hostton(
const char *,
struct ether_addr *);
377 int ether_line(
const char *,
struct ether_addr *,
char *);
379 int ether_ntohost(
char *,
const struct ether_addr *);
Definition: ethernet.h:71