|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1982, 1986 Regents of the University of California. ! 3: * All rights reserved. ! 4: * ! 5: * Redistribution and use in source and binary forms, with or without ! 6: * modification, are permitted provided that the following conditions ! 7: * are met: ! 8: * 1. Redistributions of source code must retain the above copyright ! 9: * notice, this list of conditions and the following disclaimer. ! 10: * 2. Redistributions in binary form must reproduce the above copyright ! 11: * notice, this list of conditions and the following disclaimer in the ! 12: * documentation and/or other materials provided with the distribution. ! 13: * 3. All advertising materials mentioning features or use of this software ! 14: * must display the following acknowledgement: ! 15: * This product includes software developed by the University of ! 16: * California, Berkeley and its contributors. ! 17: * 4. Neither the name of the University nor the names of its contributors ! 18: * may be used to endorse or promote products derived from this software ! 19: * without specific prior written permission. ! 20: * ! 21: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ! 22: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ! 23: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! 24: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ! 25: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! 26: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ! 27: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ! 28: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ! 29: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ! 30: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ! 31: * SUCH DAMAGE. ! 32: * ! 33: * @(#)if_ether.h 7.5 (Berkeley) 6/28/90 ! 34: */ ! 35: ! 36: /* ! 37: * Structure of a 10Mb/s Ethernet header. ! 38: */ ! 39: struct ether_header { ! 40: u_char ether_dhost[6]; ! 41: u_char ether_shost[6]; ! 42: u_short ether_type; ! 43: }; ! 44: ! 45: #define ETHERTYPE_PUP 0x0200 /* PUP protocol */ ! 46: #define ETHERTYPE_IP 0x0800 /* IP protocol */ ! 47: #define ETHERTYPE_ARP 0x0806 /* Addr. resolution protocol */ ! 48: ! 49: /* ! 50: * The ETHERTYPE_NTRAILER packet types starting at ETHERTYPE_TRAIL have ! 51: * (type-ETHERTYPE_TRAIL)*512 bytes of data followed ! 52: * by an ETHER type (as given above) and then the (variable-length) header. ! 53: */ ! 54: #define ETHERTYPE_TRAIL 0x1000 /* Trailer packet */ ! 55: #define ETHERTYPE_NTRAILER 16 ! 56: ! 57: #define ETHERMTU 1500 ! 58: #define ETHERMIN (60-14) ! 59: ! 60: /* ! 61: * Ethernet Address Resolution Protocol. ! 62: * ! 63: * See RFC 826 for protocol description. Structure below is adapted ! 64: * to resolving internet addresses. Field names used correspond to ! 65: * RFC 826. ! 66: */ ! 67: struct ether_arp { ! 68: struct arphdr ea_hdr; /* fixed-size header */ ! 69: u_char arp_sha[6]; /* sender hardware address */ ! 70: u_char arp_spa[4]; /* sender protocol address */ ! 71: u_char arp_tha[6]; /* target hardware address */ ! 72: u_char arp_tpa[4]; /* target protocol address */ ! 73: }; ! 74: #define arp_hrd ea_hdr.ar_hrd ! 75: #define arp_pro ea_hdr.ar_pro ! 76: #define arp_hln ea_hdr.ar_hln ! 77: #define arp_pln ea_hdr.ar_pln ! 78: #define arp_op ea_hdr.ar_op ! 79: ! 80: ! 81: /* ! 82: * Structure shared between the ethernet driver modules and ! 83: * the address resolution code. For example, each ec_softc or il_softc ! 84: * begins with this structure. ! 85: */ ! 86: struct arpcom { ! 87: struct ifnet ac_if; /* network-visible interface */ ! 88: u_char ac_enaddr[6]; /* ethernet hardware address */ ! 89: struct in_addr ac_ipaddr; /* copy of ip address- XXX */ ! 90: }; ! 91: ! 92: /* ! 93: * Internet to ethernet address resolution table. ! 94: */ ! 95: struct arptab { ! 96: struct in_addr at_iaddr; /* internet address */ ! 97: u_char at_enaddr[6]; /* ethernet address */ ! 98: u_char at_timer; /* minutes since last reference */ ! 99: u_char at_flags; /* flags */ ! 100: struct mbuf *at_hold; /* last packet until resolved/timeout */ ! 101: }; ! 102: ! 103: #ifdef KERNEL ! 104: u_char etherbroadcastaddr[6]; ! 105: struct arptab *arptnew(); ! 106: int ether_output(), ether_input(); ! 107: char *ether_sprintf(); ! 108: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.