|
|
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 are permitted ! 6: * provided that the above copyright notice and this paragraph are ! 7: * duplicated in all such forms and that any documentation, ! 8: * advertising materials, and other materials related to such ! 9: * distribution and use acknowledge that the software was developed ! 10: * by the University of California, Berkeley. The name of the ! 11: * University may not be used to endorse or promote products derived ! 12: * from this software without specific prior written permission. ! 13: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR ! 14: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! 15: * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 16: * ! 17: * @(#)if_ether.h 7.3 (Berkeley) 6/29/88 ! 18: */ ! 19: ! 20: /* ! 21: * Structure of a 10Mb/s Ethernet header. ! 22: */ ! 23: struct ether_header { ! 24: u_char ether_dhost[6]; ! 25: u_char ether_shost[6]; ! 26: u_short ether_type; ! 27: }; ! 28: ! 29: #define ETHERTYPE_PUP 0x0200 /* PUP protocol */ ! 30: #define ETHERTYPE_IP 0x0800 /* IP protocol */ ! 31: #define ETHERTYPE_ARP 0x0806 /* Addr. resolution protocol */ ! 32: ! 33: /* ! 34: * The ETHERTYPE_NTRAILER packet types starting at ETHERTYPE_TRAIL have ! 35: * (type-ETHERTYPE_TRAIL)*512 bytes of data followed ! 36: * by an ETHER type (as given above) and then the (variable-length) header. ! 37: */ ! 38: #define ETHERTYPE_TRAIL 0x1000 /* Trailer packet */ ! 39: #define ETHERTYPE_NTRAILER 16 ! 40: ! 41: #define ETHERMTU 1500 ! 42: #define ETHERMIN (60-14) ! 43: ! 44: /* ! 45: * Ethernet Address Resolution Protocol. ! 46: * ! 47: * See RFC 826 for protocol description. Structure below is adapted ! 48: * to resolving internet addresses. Field names used correspond to ! 49: * RFC 826. ! 50: */ ! 51: struct ether_arp { ! 52: struct arphdr ea_hdr; /* fixed-size header */ ! 53: u_char arp_sha[6]; /* sender hardware address */ ! 54: u_char arp_spa[4]; /* sender protocol address */ ! 55: u_char arp_tha[6]; /* target hardware address */ ! 56: u_char arp_tpa[4]; /* target protocol address */ ! 57: }; ! 58: #define arp_hrd ea_hdr.ar_hrd ! 59: #define arp_pro ea_hdr.ar_pro ! 60: #define arp_hln ea_hdr.ar_hln ! 61: #define arp_pln ea_hdr.ar_pln ! 62: #define arp_op ea_hdr.ar_op ! 63: ! 64: ! 65: /* ! 66: * Structure shared between the ethernet driver modules and ! 67: * the address resolution code. For example, each ec_softc or il_softc ! 68: * begins with this structure. ! 69: */ ! 70: struct arpcom { ! 71: struct ifnet ac_if; /* network-visible interface */ ! 72: u_char ac_enaddr[6]; /* ethernet hardware address */ ! 73: struct in_addr ac_ipaddr; /* copy of ip address- XXX */ ! 74: }; ! 75: ! 76: /* ! 77: * Internet to ethernet address resolution table. ! 78: */ ! 79: struct arptab { ! 80: struct in_addr at_iaddr; /* internet address */ ! 81: u_char at_enaddr[6]; /* ethernet address */ ! 82: u_char at_timer; /* minutes since last reference */ ! 83: u_char at_flags; /* flags */ ! 84: struct mbuf *at_hold; /* last packet until resolved/timeout */ ! 85: }; ! 86: ! 87: #ifdef KERNEL ! 88: u_char etherbroadcastaddr[6]; ! 89: struct arptab *arptnew(); ! 90: char *ether_sprintf(); ! 91: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.