123173Smckusick /* 229135Smckusick * Copyright (c) 1982, 1986 Regents of the University of California. 3*32787Sbostic * All rights reserved. 423173Smckusick * 5*32787Sbostic * Redistribution and use in source and binary forms are permitted 6*32787Sbostic * provided that this notice is preserved and that due credit is given 7*32787Sbostic * to the University of California at Berkeley. The name of the University 8*32787Sbostic * may not be used to endorse or promote products derived from this 9*32787Sbostic * software without specific prior written permission. This software 10*32787Sbostic * is provided ``as is'' without express or implied warranty. 11*32787Sbostic * 12*32787Sbostic * @(#)if_ether.h 7.2 (Berkeley) 12/07/87 1323173Smckusick */ 149744Ssam 159744Ssam /* 169744Ssam * Structure of a 10Mb/s Ethernet header. 179744Ssam */ 189746Ssam struct ether_header { 1918641Skarels u_char ether_dhost[6]; 2018641Skarels u_char ether_shost[6]; 219746Ssam u_short ether_type; 229744Ssam }; 239744Ssam 2418641Skarels #define ETHERTYPE_PUP 0x0200 /* PUP protocol */ 2518641Skarels #define ETHERTYPE_IP 0x0800 /* IP protocol */ 2618641Skarels #define ETHERTYPE_ARP 0x0806 /* Addr. resolution protocol */ 279744Ssam 289744Ssam /* 2918641Skarels * The ETHERTYPE_NTRAILER packet types starting at ETHERTYPE_TRAIL have 3025891Skarels * (type-ETHERTYPE_TRAIL)*512 bytes of data followed 3125891Skarels * by an ETHER type (as given above) and then the (variable-length) header. 329744Ssam */ 3318641Skarels #define ETHERTYPE_TRAIL 0x1000 /* Trailer packet */ 3418641Skarels #define ETHERTYPE_NTRAILER 16 359746Ssam 369746Ssam #define ETHERMTU 1500 379746Ssam #define ETHERMIN (60-14) 3811573Ssam 3911573Ssam /* 4011573Ssam * Ethernet Address Resolution Protocol. 4111573Ssam * 4211573Ssam * See RFC 826 for protocol description. Structure below is adapted 4311573Ssam * to resolving internet addresses. Field names used correspond to 4411573Ssam * RFC 826. 4511573Ssam */ 4611573Ssam struct ether_arp { 4725891Skarels struct arphdr ea_hdr; /* fixed-size header */ 4818641Skarels u_char arp_sha[6]; /* sender hardware address */ 4918641Skarels u_char arp_spa[4]; /* sender protocol address */ 5018641Skarels u_char arp_tha[6]; /* target hardware address */ 5118641Skarels u_char arp_tpa[4]; /* target protocol address */ 5211573Ssam }; 5325891Skarels #define arp_hrd ea_hdr.ar_hrd 5425891Skarels #define arp_pro ea_hdr.ar_pro 5525891Skarels #define arp_hln ea_hdr.ar_hln 5625891Skarels #define arp_pln ea_hdr.ar_pln 5725891Skarels #define arp_op ea_hdr.ar_op 5811573Ssam 5925891Skarels 6011573Ssam /* 6111573Ssam * Structure shared between the ethernet driver modules and 6211573Ssam * the address resolution code. For example, each ec_softc or il_softc 6311573Ssam * begins with this structure. 6411573Ssam */ 6511573Ssam struct arpcom { 6618641Skarels struct ifnet ac_if; /* network-visible interface */ 6718641Skarels u_char ac_enaddr[6]; /* ethernet hardware address */ 6818641Skarels struct in_addr ac_ipaddr; /* copy of ip address- XXX */ 6911573Ssam }; 7011573Ssam 7116211Skarels /* 7216211Skarels * Internet to ethernet address resolution table. 7316211Skarels */ 7416211Skarels struct arptab { 7516211Skarels struct in_addr at_iaddr; /* internet address */ 7618641Skarels u_char at_enaddr[6]; /* ethernet address */ 7716211Skarels u_char at_timer; /* minutes since last reference */ 7816211Skarels u_char at_flags; /* flags */ 7924804Skarels struct mbuf *at_hold; /* last packet until resolved/timeout */ 8016211Skarels }; 8116211Skarels 8212459Ssam #ifdef KERNEL 8318641Skarels u_char etherbroadcastaddr[6]; 8411573Ssam struct arptab *arptnew(); 8525891Skarels char *ether_sprintf(); 8611573Ssam #endif 87