home *** CD-ROM | disk | FTP | other *** search
/ Steganos Hacker Tools / SHT151.iso / programme / scanner / nmapNTsp1 / Win_2000.exe / nmapNT-src / nmapNT / NET / if_arp.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-03-24  |  4.4 KB  |  111 lines

  1. /*
  2.  * Copyright (c) 1986, 1993
  3.  *    The Regents of the University of California.  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_arp.h    8.1 (Berkeley) 6/10/93
  34.  * $FreeBSD: src/sys/net/if_arp.h,v 1.10.2.2 1999/08/29 16:28:15 peter Exp $
  35.  */
  36.  
  37. #ifndef _NET_IF_ARP_H_
  38. #define    _NET_IF_ARP_H_
  39.  
  40. /*
  41.  * Address Resolution Protocol.
  42.  *
  43.  * See RFC 826 for protocol description.  ARP packets are variable
  44.  * in size; the arphdr structure defines the fixed-length portion.
  45.  * Protocol type values are the same as those for 10 Mb/s Ethernet.
  46.  * It is followed by the variable-sized fields ar_sha, arp_spa,
  47.  * arp_tha and arp_tpa in that order, according to the lengths
  48.  * specified.  Field names used correspond to RFC 826.
  49.  */
  50. struct    arphdr {
  51.     u_short    ar_hrd;        /* format of hardware address */
  52. #define ARPHRD_ETHER     1    /* ethernet hardware format */
  53. #define ARPHRD_IEEE802    6    /* token-ring hardware format */
  54. #define ARPHRD_FRELAY     15    /* frame relay hardware format */
  55.     u_short    ar_pro;        /* format of protocol address */
  56.     u_char    ar_hln;        /* length of hardware address */
  57.     u_char    ar_pln;        /* length of protocol address */
  58.     u_short    ar_op;        /* one of: */
  59. #define    ARPOP_REQUEST    1    /* request to resolve address */
  60. #define    ARPOP_REPLY    2    /* response to previous request */
  61. #define    ARPOP_REVREQUEST 3    /* request protocol address given hardware */
  62. #define    ARPOP_REVREPLY    4    /* response giving protocol address */
  63. #define ARPOP_INVREQUEST 8     /* request to identify peer */
  64. #define ARPOP_INVREPLY    9    /* response identifying peer */
  65. /*
  66.  * The remaining fields are variable in size,
  67.  * according to the sizes above.
  68.  */
  69. #ifdef COMMENT_ONLY
  70.     u_char    ar_sha[];    /* sender hardware address */
  71.     u_char    ar_spa[];    /* sender protocol address */
  72.     u_char    ar_tha[];    /* target hardware address */
  73.     u_char    ar_tpa[];    /* target protocol address */
  74. #endif
  75. };
  76.  
  77. /*
  78.  * ARP ioctl request
  79.  */
  80. struct arpreq {
  81.     struct    sockaddr arp_pa;        /* protocol address */
  82.     struct    sockaddr arp_ha;        /* hardware address */
  83.     int    arp_flags;            /* flags */
  84. };
  85. /*  arp_flags and at_flags field values */
  86. #define    ATF_INUSE    0x01    /* entry in use */
  87. #define ATF_COM        0x02    /* completed entry (enaddr valid) */
  88. #define    ATF_PERM    0x04    /* permanent entry */
  89. #define    ATF_PUBL    0x08    /* publish entry (respond for other host) */
  90. #define    ATF_USETRAILERS    0x10    /* has requested trailers */
  91.  
  92. #ifdef KERNEL
  93. /*
  94.  * Structure shared between the ethernet driver modules and
  95.  * the address resolution code.  For example, each ec_softc or il_softc
  96.  * begins with this structure.
  97.  */
  98. struct    arpcom {
  99.     /*
  100.      * The ifnet struct _must_ be at the head of this structure.
  101.      */
  102.     struct     ifnet ac_if;        /* network-visible interface */
  103.     u_char    ac_enaddr[6];        /* ethernet hardware address */
  104.     int    ac_multicnt;        /* length of ac_multiaddrs list */
  105. };
  106.  
  107. extern u_char    etherbroadcastaddr[6];
  108. #endif
  109.  
  110. #endif /* !_NET_IF_ARP_H_ */
  111.