home *** CD-ROM | disk | FTP | other *** search
/ Aminet 18 / aminetcdnumber181997.iso / Aminet / dev / gcc / ixemulsrc.lha / ixemul / include / netinet / if_ether.h < prev    next >
C/C++ Source or Header  |  1996-12-11  |  3KB  |  92 lines

  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
  92.