Annotation of embedaddon/libnet/doc/html/libnet-headers_8h-source.html, revision 1.1

1.1     ! misho       1: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
        !             2: <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
        !             3: <title>libnet: libnet-headers.h Source File</title>
        !             4: <link href="doxygen.css" rel="stylesheet" type="text/css">
        !             5: </head><body>
        !             6: <!-- Generated by Doxygen 1.3.4 -->
        !             7: <div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
        !             8: <h1>libnet-headers.h</h1><a href="libnet-headers_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/*</span>
        !             9: 00002 <span class="comment"> *  $Id: libnet-headers.h,v 1.13 2004/03/01 20:26:12 mike Exp $</span>
        !            10: 00003 <span class="comment"> *</span>
        !            11: 00004 <span class="comment"> *  libnet-headers.h - Network routine library headers header file</span>
        !            12: 00005 <span class="comment"> *</span>
        !            13: 00006 <span class="comment"> *  Copyright (c) 1998 - 2004 Mike D. Schiffman &lt;mike@infonexus.com&gt;</span>
        !            14: 00007 <span class="comment"> *  All rights reserved.</span>
        !            15: 00008 <span class="comment"> *</span>
        !            16: 00009 <span class="comment"> * Redistribution and use in source and binary forms, with or without</span>
        !            17: 00010 <span class="comment"> * modification, are permitted provided that the following conditions</span>
        !            18: 00011 <span class="comment"> * are met:</span>
        !            19: 00012 <span class="comment"> * 1. Redistributions of source code must retain the above copyright</span>
        !            20: 00013 <span class="comment"> *    notice, this list of conditions and the following disclaimer.</span>
        !            21: 00014 <span class="comment"> * 2. Redistributions in binary form must reproduce the above copyright</span>
        !            22: 00015 <span class="comment"> *    notice, this list of conditions and the following disclaimer in the</span>
        !            23: 00016 <span class="comment"> *    documentation and/or other materials provided with the distribution.</span>
        !            24: 00017 <span class="comment"> *</span>
        !            25: 00018 <span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND</span>
        !            26: 00019 <span class="comment"> * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span>
        !            27: 00020 <span class="comment"> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span>
        !            28: 00021 <span class="comment"> * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE</span>
        !            29: 00022 <span class="comment"> * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL</span>
        !            30: 00023 <span class="comment"> * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS</span>
        !            31: 00024 <span class="comment"> * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)</span>
        !            32: 00025 <span class="comment"> * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span>
        !            33: 00026 <span class="comment"> * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</span>
        !            34: 00027 <span class="comment"> * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF</span>
        !            35: 00028 <span class="comment"> * SUCH DAMAGE.</span>
        !            36: 00029 <span class="comment"> *</span>
        !            37: 00030 <span class="comment"> */</span>
        !            38: 00031 
        !            39: 00032 <span class="preprocessor">#ifndef __LIBNET_HEADERS_H</span>
        !            40: 00033 <span class="preprocessor"></span><span class="preprocessor">#define __LIBNET_HEADERS_H</span>
        !            41: 00034 <span class="preprocessor"></span>
        !            42: <a name="l00042"></a><a class="code" href="libnet-headers_8h.html#a0">00042</a> <span class="preprocessor">#define LIBNET_802_1Q_H         0x12    </span>
        !            43: <a name="l00043"></a><a class="code" href="libnet-headers_8h.html#a1">00043</a> <span class="preprocessor">#define LIBNET_802_1X_H         0x04    </span>
        !            44: <a name="l00044"></a><a class="code" href="libnet-headers_8h.html#a2">00044</a> <span class="preprocessor">#define LIBNET_802_2_H          0x03    </span>
        !            45: <a name="l00045"></a><a class="code" href="libnet-headers_8h.html#a3">00045</a> <span class="preprocessor">#define LIBNET_802_2SNAP_H      0x08    </span>
        !            46: <a name="l00046"></a><a class="code" href="libnet-headers_8h.html#a4">00046</a> <span class="preprocessor">#define LIBNET_802_3_H          0x0e    </span>
        !            47: <a name="l00047"></a><a class="code" href="libnet-headers_8h.html#a5">00047</a> <span class="preprocessor">#define LIBNET_ARP_H            0x08    </span>
        !            48: <a name="l00048"></a><a class="code" href="libnet-headers_8h.html#a6">00048</a> <span class="preprocessor">#define LIBNET_ARP_ETH_IP_H     0x1c    </span>
        !            49: <a name="l00049"></a><a class="code" href="libnet-headers_8h.html#a7">00049</a> <span class="preprocessor">#define LIBNET_BGP4_HEADER_H    0x13    </span>
        !            50: <a name="l00050"></a><a class="code" href="libnet-headers_8h.html#a8">00050</a> <span class="preprocessor">#define LIBNET_BGP4_OPEN_H      0x0a    </span>
        !            51: <a name="l00051"></a><a class="code" href="libnet-headers_8h.html#a9">00051</a> <span class="preprocessor">#define LIBNET_BGP4_UPDATE_H    0x04    </span>
        !            52: <a name="l00052"></a><a class="code" href="libnet-headers_8h.html#a10">00052</a> <span class="preprocessor">#define LIBNET_BGP4_NOTIFICATION_H 0x02 </span>
        !            53: <a name="l00053"></a><a class="code" href="libnet-headers_8h.html#a11">00053</a> <span class="preprocessor">#define LIBNET_CDP_H            0x08    </span>
        !            54: <a name="l00054"></a><a class="code" href="libnet-headers_8h.html#a12">00054</a> <span class="preprocessor">#define LIBNET_DHCPV4_H         0xf0    </span>
        !            55: <a name="l00055"></a><a class="code" href="libnet-headers_8h.html#a13">00055</a> <span class="preprocessor">#define LIBNET_UDP_DNSV4_H      0x0c    </span>
        !            56: <a name="l00056"></a><a class="code" href="libnet-headers_8h.html#a14">00056</a> <span class="preprocessor">#define LIBNET_TCP_DNSV4_H      0x0e    </span>
        !            57: <a name="l00057"></a><a class="code" href="libnet-headers_8h.html#a15">00057</a> <span class="preprocessor">#define LIBNET_ETH_H            0x0e    </span>
        !            58: <a name="l00058"></a><a class="code" href="libnet-headers_8h.html#a16">00058</a> <span class="preprocessor">#define LIBNET_FDDI_H           0x15    </span>
        !            59: <a name="l00059"></a><a class="code" href="libnet-headers_8h.html#a17">00059</a> <span class="preprocessor">#define LIBNET_ICMPV4_H         0x04    </span>
        !            60: <a name="l00060"></a><a class="code" href="libnet-headers_8h.html#a18">00060</a> <span class="preprocessor">#define LIBNET_ICMPV4_ECHO_H    0x08    </span>
        !            61: <a name="l00061"></a><a class="code" href="libnet-headers_8h.html#a19">00061</a> <span class="preprocessor">#define LIBNET_ICMPV4_MASK_H    0x0c    </span>
        !            62: <a name="l00062"></a><a class="code" href="libnet-headers_8h.html#a20">00062</a> <span class="preprocessor">#define LIBNET_ICMPV4_UNREACH_H  0x08   </span>
        !            63: <a name="l00063"></a><a class="code" href="libnet-headers_8h.html#a21">00063</a> <span class="preprocessor">#define LIBNET_ICMPV4_TIMXCEED_H 0x08   </span>
        !            64: <a name="l00064"></a><a class="code" href="libnet-headers_8h.html#a22">00064</a> <span class="preprocessor">#define LIBNET_ICMPV4_REDIRECT_H 0x08   </span>
        !            65: <a name="l00065"></a><a class="code" href="libnet-headers_8h.html#a23">00065</a> <span class="preprocessor">#define LIBNET_ICMPV4_TS_H      0x14    </span>
        !            66: <a name="l00066"></a><a class="code" href="libnet-headers_8h.html#a24">00066</a> <span class="preprocessor">#define LIBNET_ICMPV6_H         0x08    </span>
        !            67: <a name="l00067"></a><a class="code" href="libnet-headers_8h.html#a25">00067</a> <span class="preprocessor">#define LIBNET_IGMP_H           0x08    </span>
        !            68: <a name="l00068"></a><a class="code" href="libnet-headers_8h.html#a26">00068</a> <span class="preprocessor">#define LIBNET_IPV4_H           0x14    </span>
        !            69: <a name="l00069"></a><a class="code" href="libnet-headers_8h.html#a27">00069</a> <span class="preprocessor">#define LIBNET_IPV6_H           0x28    </span>
        !            70: <a name="l00070"></a><a class="code" href="libnet-headers_8h.html#a28">00070</a> <span class="preprocessor">#define LIBNET_IPV6_FRAG_H      0x08    </span>
        !            71: <a name="l00071"></a><a class="code" href="libnet-headers_8h.html#a29">00071</a> <span class="preprocessor">#define LIBNET_IPV6_ROUTING_H   0x04    </span>
        !            72: <a name="l00072"></a><a class="code" href="libnet-headers_8h.html#a30">00072</a> <span class="preprocessor">#define LIBNET_IPV6_DESTOPTS_H  0x02    </span>
        !            73: <a name="l00073"></a><a class="code" href="libnet-headers_8h.html#a31">00073</a> <span class="preprocessor">#define LIBNET_IPV6_HBHOPTS_H   0x02    </span>
        !            74: <a name="l00074"></a><a class="code" href="libnet-headers_8h.html#a32">00074</a> <span class="preprocessor">#define LIBNET_IPSEC_ESP_HDR_H  0x0c    </span>
        !            75: <a name="l00075"></a><a class="code" href="libnet-headers_8h.html#a33">00075</a> <span class="preprocessor">#define LIBNET_IPSEC_ESP_FTR_H  0x02    </span>
        !            76: <a name="l00076"></a><a class="code" href="libnet-headers_8h.html#a34">00076</a> <span class="preprocessor">#define LIBNET_IPSEC_AH_H       0x10    </span>
        !            77: <a name="l00077"></a><a class="code" href="libnet-headers_8h.html#a35">00077</a> <span class="preprocessor">#define LIBNET_ISL_H            0x1a    </span>
        !            78: <a name="l00078"></a><a class="code" href="libnet-headers_8h.html#a36">00078</a> <span class="preprocessor">#define LIBNET_GRE_H            0x04    </span>
        !            79: <a name="l00079"></a><a class="code" href="libnet-headers_8h.html#a37">00079</a> <span class="preprocessor">#define LIBNET_GRE_SRE_H        0x04    </span>
        !            80: <a name="l00080"></a><a class="code" href="libnet-headers_8h.html#a38">00080</a> <span class="preprocessor">#define LIBNET_MPLS_H           0x04    </span>
        !            81: <a name="l00081"></a><a class="code" href="libnet-headers_8h.html#a39">00081</a> <span class="preprocessor">#define LIBNET_OSPF_H           0x10    </span>
        !            82: <a name="l00082"></a><a class="code" href="libnet-headers_8h.html#a40">00082</a> <span class="preprocessor">#define LIBNET_OSPF_HELLO_H     0x18    </span>
        !            83: <a name="l00083"></a><a class="code" href="libnet-headers_8h.html#a41">00083</a> <span class="preprocessor">#define LIBNET_OSPF_DBD_H       0x08    </span>
        !            84: <a name="l00084"></a><a class="code" href="libnet-headers_8h.html#a42">00084</a> <span class="preprocessor">#define LIBNET_OSPF_LSR_H       0x0c    </span>
        !            85: <a name="l00085"></a><a class="code" href="libnet-headers_8h.html#a43">00085</a> <span class="preprocessor">#define LIBNET_OSPF_LSU_H       0x04    </span>
        !            86: <a name="l00086"></a><a class="code" href="libnet-headers_8h.html#a44">00086</a> <span class="preprocessor">#define LIBNET_OSPF_LSA_H       0x14    </span>
        !            87: <a name="l00087"></a><a class="code" href="libnet-headers_8h.html#a45">00087</a> <span class="preprocessor">#define LIBNET_OSPF_AUTH_H      0x08    </span>
        !            88: <a name="l00088"></a><a class="code" href="libnet-headers_8h.html#a46">00088</a> <span class="preprocessor">#define LIBNET_OSPF_CKSUM       0x10    </span>
        !            89: <a name="l00089"></a><a class="code" href="libnet-headers_8h.html#a47">00089</a> <span class="preprocessor">#define LIBNET_OSPF_LS_RTR_H    0x10    </span>
        !            90: <a name="l00090"></a><a class="code" href="libnet-headers_8h.html#a48">00090</a> <span class="preprocessor">#define LIBNET_OSPF_LS_NET_H    0x08    </span>
        !            91: <a name="l00091"></a><a class="code" href="libnet-headers_8h.html#a49">00091</a> <span class="preprocessor">#define LIBNET_OSPF_LS_SUM_H    0x0c    </span>
        !            92: <a name="l00092"></a><a class="code" href="libnet-headers_8h.html#a50">00092</a> <span class="preprocessor">#define LIBNET_OSPF_LS_AS_EXT_H 0x10    </span>
        !            93: <a name="l00093"></a><a class="code" href="libnet-headers_8h.html#a51">00093</a> <span class="preprocessor">#define LIBNET_NTP_H            0x30    </span>
        !            94: <a name="l00094"></a><a class="code" href="libnet-headers_8h.html#a52">00094</a> <span class="preprocessor">#define LIBNET_RIP_H            0x18    </span>
        !            95: <a name="l00095"></a><a class="code" href="libnet-headers_8h.html#a53">00095</a> <span class="preprocessor">#define LIBNET_RPC_CALL_H       0x28    </span>
        !            96: <a name="l00098"></a><a class="code" href="libnet-headers_8h.html#a54">00098</a> <span class="preprocessor">#define LIBNET_RPC_CALL_TCP_H   0x2c    </span>
        !            97: 00101 <span class="preprocessor">#define LIBNET_SEBEK_H          0x30    </span><span class="comment">/* sebek header:          48 bytes */</span>   
        !            98: <a name="l00102"></a><a class="code" href="libnet-headers_8h.html#a56">00102</a> <span class="preprocessor">#define LIBNET_STP_CONF_H       0x23    </span>
        !            99: <a name="l00103"></a><a class="code" href="libnet-headers_8h.html#a57">00103</a> <span class="preprocessor">#define LIBNET_STP_TCN_H        0x04    </span>
        !           100: <a name="l00104"></a><a class="code" href="libnet-headers_8h.html#a58">00104</a> <span class="preprocessor">#define LIBNET_TOKEN_RING_H     0x16    </span>
        !           101: <a name="l00105"></a><a class="code" href="libnet-headers_8h.html#a59">00105</a> <span class="preprocessor">#define LIBNET_TCP_H            0x14    </span>
        !           102: <a name="l00106"></a><a class="code" href="libnet-headers_8h.html#a60">00106</a> <span class="preprocessor">#define LIBNET_UDP_H            0x08    </span>
        !           103: <a name="l00107"></a><a class="code" href="libnet-headers_8h.html#a61">00107</a> <span class="preprocessor">#define LIBNET_VRRP_H           0x08    </span>
        !           104: <a name="l00113"></a><a class="code" href="structlibnet__802__1q__hdr.html">00113</a> <span class="preprocessor">struct libnet_802_1q_hdr</span>
        !           105: 00114 <span class="preprocessor"></span>{
        !           106: <a name="l00115"></a><a class="code" href="structlibnet__802__1q__hdr.html#o0">00115</a>     u_int8_t vlan_dhost[ETHER_ADDR_LEN];  
        !           107: <a name="l00116"></a><a class="code" href="structlibnet__802__1q__hdr.html#o1">00116</a>     u_int8_t vlan_shost[ETHER_ADDR_LEN];  
        !           108: <a name="l00117"></a><a class="code" href="structlibnet__802__1q__hdr.html#o2">00117</a>     u_int16_t vlan_tpi;                   
        !           109: <a name="l00118"></a><a class="code" href="structlibnet__802__1q__hdr.html#o3">00118</a>     u_int16_t vlan_priority_c_vid;        
        !           110: <a name="l00119"></a><a class="code" href="libnet-headers_8h.html#a62">00119</a> <span class="preprocessor">#define LIBNET_802_1Q_PRIMASK   0x0007    </span>
        !           111: <a name="l00120"></a><a class="code" href="libnet-headers_8h.html#a63">00120</a> <span class="preprocessor">#define LIBNET_802_1Q_CFIMASK   0x0001    </span>
        !           112: <a name="l00121"></a><a class="code" href="libnet-headers_8h.html#a64">00121</a> <span class="preprocessor">#define LIBNET_802_1Q_VIDMASK   0x0fff    </span>
        !           113: <a name="l00122"></a><a class="code" href="structlibnet__802__1q__hdr.html#o4">00122</a> <span class="preprocessor">    u_int16_t vlan_len;                   </span>
        !           114: 00123 <span class="preprocessor">};  </span>
        !           115: 00124 <span class="preprocessor"></span>
        !           116: <a name="l00129"></a><a class="code" href="structlibnet__802__1x__hdr.html">00129</a> <span class="keyword">struct </span><a class="code" href="structlibnet__802__1x__hdr.html">libnet_802_1x_hdr</a>
        !           117: 00130 {
        !           118: <a name="l00131"></a><a class="code" href="structlibnet__802__1x__hdr.html#o0">00131</a>     u_int8_t <a class="code" href="structlibnet__802__1x__hdr.html#o0">dot1x_version</a>;               
        !           119: <a name="l00132"></a><a class="code" href="structlibnet__802__1x__hdr.html#o1">00132</a>     u_int8_t <a class="code" href="structlibnet__802__1x__hdr.html#o1">dot1x_type</a>;                  
        !           120: <a name="l00133"></a><a class="code" href="libnet-headers_8h.html#a65">00133</a> <span class="preprocessor">#define LIBNET_802_1X_PACKET    0x00      </span>
        !           121: <a name="l00134"></a><a class="code" href="libnet-headers_8h.html#a66">00134</a> <span class="preprocessor">#define LIBNET_802_1X_START     0x01      </span>
        !           122: <a name="l00135"></a><a class="code" href="libnet-headers_8h.html#a67">00135</a> <span class="preprocessor">#define LIBNET_802_1X_LOGOFF    0x02      </span>
        !           123: <a name="l00136"></a><a class="code" href="libnet-headers_8h.html#a68">00136</a> <span class="preprocessor">#define LIBNET_802_1X_KEY       0x03      </span>
        !           124: <a name="l00137"></a><a class="code" href="libnet-headers_8h.html#a69">00137</a> <span class="preprocessor">#define LIBNET_802_1X_ENCASFAL  0x04      </span>
        !           125: <a name="l00138"></a><a class="code" href="structlibnet__802__1x__hdr.html#o2">00138</a> <span class="preprocessor">    u_int16_t dot1x_length;               </span>
        !           126: 00139 <span class="preprocessor">};  </span>
        !           127: 00140 <span class="preprocessor"></span>
        !           128: 00141 <span class="comment">/*</span>
        !           129: 00142 <span class="comment"> *  IEEE 802.2 LLC header</span>
        !           130: 00143 <span class="comment"> *  Link Layer Control</span>
        !           131: 00144 <span class="comment"> *  static header size: 3 bytes</span>
        !           132: 00145 <span class="comment"> */</span>
        !           133: 00146 <span class="keyword">struct </span>libnet_802_2_hdr
        !           134: 00147 {
        !           135: 00148     u_int8_t llc_dsap;            <span class="comment">/* destination service access point */</span>
        !           136: 00149     u_int8_t llc_ssap;            <span class="comment">/* source service access point */</span>
        !           137: 00150 <span class="preprocessor">#define LIBNET_SAP_STP          0x42</span>
        !           138: 00151 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_SAP_SNAP         0xaa</span>
        !           139: 00152 <span class="preprocessor"></span>    u_int8_t llc_control;         <span class="comment">/* control field */</span>
        !           140: 00153 };
        !           141: 00154 
        !           142: 00155 
        !           143: 00156 <span class="comment">/*</span>
        !           144: 00157 <span class="comment"> *  IEEE 802.2 LLC/SNAP header</span>
        !           145: 00158 <span class="comment"> *  SubNetwork Attachment Point</span>
        !           146: 00159 <span class="comment"> *  static header size: 8 bytes</span>
        !           147: 00160 <span class="comment"> */</span>
        !           148: 00161 <span class="keyword">struct </span>libnet_802_2snap_hdr
        !           149: 00162 {
        !           150: 00163     u_int8_t snap_dsap;           <span class="comment">/* destination service access point */</span>
        !           151: 00164     u_int8_t snap_ssap;           <span class="comment">/* destination service access point */</span>
        !           152: 00165     u_int8_t snap_control;        <span class="comment">/* control field */</span>
        !           153: 00166     u_int8_t snap_oui[3];         <span class="comment">/* OUI */</span>
        !           154: 00167     u_int16_t snap_type;          <span class="comment">/* type */</span>
        !           155: 00168 };
        !           156: 00169 
        !           157: 00170 
        !           158: 00171 <span class="comment">/*</span>
        !           159: 00172 <span class="comment"> *  802.3 header</span>
        !           160: 00173 <span class="comment"> *  IEEE Ethernet</span>
        !           161: 00174 <span class="comment"> *  Static header size: 14 bytes</span>
        !           162: 00175 <span class="comment"> */</span>
        !           163: 00176 <span class="keyword">struct </span>libnet_802_3_hdr
        !           164: 00177 {
        !           165: 00178     u_int8_t  _802_3_dhost[ETHER_ADDR_LEN];<span class="comment">/* destination ethernet address */</span>
        !           166: 00179     u_int8_t  _802_3_shost[ETHER_ADDR_LEN];<span class="comment">/* source ethernet address */</span>
        !           167: 00180     u_int16_t _802_3_len;                 <span class="comment">/* packet type ID */</span>
        !           168: 00181 };
        !           169: 00182 
        !           170: 00183 
        !           171: 00184 <span class="comment">/* </span>
        !           172: 00185 <span class="comment"> *  ARP header</span>
        !           173: 00186 <span class="comment"> *  Address Resolution Protocol</span>
        !           174: 00187 <span class="comment"> *  Base header size: 8 bytes</span>
        !           175: 00188 <span class="comment"> */</span>
        !           176: 00189 <span class="keyword">struct </span>libnet_arp_hdr
        !           177: 00190 {
        !           178: 00191     u_int16_t ar_hrd;         <span class="comment">/* format of hardware address */</span>
        !           179: 00192 <span class="preprocessor">#define ARPHRD_NETROM   0   </span><span class="comment">/* from KA9Q: NET/ROM pseudo */</span>
        !           180: 00193 <span class="preprocessor">#define ARPHRD_ETHER    1   </span><span class="comment">/* Ethernet 10Mbps */</span>
        !           181: 00194 <span class="preprocessor">#define ARPHRD_EETHER   2   </span><span class="comment">/* Experimental Ethernet */</span>
        !           182: 00195 <span class="preprocessor">#define ARPHRD_AX25     3   </span><span class="comment">/* AX.25 Level 2 */</span>
        !           183: 00196 <span class="preprocessor">#define ARPHRD_PRONET   4   </span><span class="comment">/* PROnet token ring */</span>
        !           184: 00197 <span class="preprocessor">#define ARPHRD_CHAOS    5   </span><span class="comment">/* Chaosnet */</span>
        !           185: 00198 <span class="preprocessor">#define ARPHRD_IEEE802  6   </span><span class="comment">/* IEEE 802.2 Ethernet/TR/TB */</span>
        !           186: 00199 <span class="preprocessor">#define ARPHRD_ARCNET   7   </span><span class="comment">/* ARCnet */</span>
        !           187: 00200 <span class="preprocessor">#define ARPHRD_APPLETLK 8   </span><span class="comment">/* APPLEtalk */</span>
        !           188: 00201 <span class="preprocessor">#define ARPHRD_LANSTAR  9   </span><span class="comment">/* Lanstar */</span>
        !           189: 00202 <span class="preprocessor">#define ARPHRD_DLCI     15  </span><span class="comment">/* Frame Relay DLCI */</span>
        !           190: 00203 <span class="preprocessor">#define ARPHRD_ATM      19  </span><span class="comment">/* ATM */</span>
        !           191: 00204 <span class="preprocessor">#define ARPHRD_METRICOM 23  </span><span class="comment">/* Metricom STRIP (new IANA id) */</span>
        !           192: 00205 <span class="preprocessor">#define ARPHRD_IPSEC    31  </span><span class="comment">/* IPsec tunnel */</span>
        !           193: 00206     u_int16_t ar_pro;         <span class="comment">/* format of protocol address */</span>
        !           194: 00207     u_int8_t  ar_hln;         <span class="comment">/* length of hardware address */</span>
        !           195: 00208     u_int8_t  ar_pln;         <span class="comment">/* length of protocol addres */</span>
        !           196: 00209     u_int16_t ar_op;          <span class="comment">/* operation type */</span>
        !           197: 00210 <span class="preprocessor">#define ARPOP_REQUEST    1  </span><span class="comment">/* req to resolve address */</span>
        !           198: 00211 <span class="preprocessor">#define ARPOP_REPLY      2  </span><span class="comment">/* resp to previous request */</span>
        !           199: 00212 <span class="preprocessor">#define ARPOP_REVREQUEST 3  </span><span class="comment">/* req protocol address given hardware */</span>
        !           200: 00213 <span class="preprocessor">#define ARPOP_REVREPLY   4  </span><span class="comment">/* resp giving protocol address */</span>
        !           201: 00214 <span class="preprocessor">#define ARPOP_INVREQUEST 8  </span><span class="comment">/* req to identify peer */</span>
        !           202: 00215 <span class="preprocessor">#define ARPOP_INVREPLY   9  </span><span class="comment">/* resp identifying peer */</span>
        !           203: 00216     <span class="comment">/* address information allocated dynamically */</span>
        !           204: 00217 };
        !           205: 00218 
        !           206: 00219 <span class="comment">/*</span>
        !           207: 00220 <span class="comment"> * BGP4 header</span>
        !           208: 00221 <span class="comment"> * Border Gateway Protocol 4</span>
        !           209: 00222 <span class="comment"> * Base header size : 19 bytes</span>
        !           210: 00223 <span class="comment"> */</span>
        !           211: 00224 <span class="keyword">struct </span>libnet_bgp4_header_hdr
        !           212: 00225 {
        !           213: 00226 <span class="preprocessor">#define LIBNET_BGP4_MARKER_SIZE   16</span>
        !           214: 00227 <span class="preprocessor"></span>    u_int8_t marker[LIBNET_BGP4_MARKER_SIZE];
        !           215: 00228     u_int16_t len;
        !           216: 00229     u_int8_t type;
        !           217: 00230 <span class="preprocessor">#define LIBNET_BGP4_OPEN          1</span>
        !           218: 00231 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_UPDATE        2</span>
        !           219: 00232 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_NOTIFICATION  3</span>
        !           220: 00233 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_KEEPALIVE     4</span>
        !           221: 00234 <span class="preprocessor"></span>};
        !           222: 00235 
        !           223: 00236 <span class="comment">/*</span>
        !           224: 00237 <span class="comment"> * BGP4 open header</span>
        !           225: 00238 <span class="comment"> * Border Gateway Protocol 4</span>
        !           226: 00239 <span class="comment"> * Base header size : 10 bytes</span>
        !           227: 00240 <span class="comment"> */</span>
        !           228: 00241 <span class="keyword">struct </span>libnet_bgp4_open_hdr
        !           229: 00242 {
        !           230: 00243     u_int8_t version;
        !           231: 00244     u_int16_t src_as;
        !           232: 00245     u_int16_t hold_time;
        !           233: 00246     u_int32_t bgp_id;
        !           234: 00247     u_int8_t opt_len;
        !           235: 00248 };
        !           236: 00249 
        !           237: 00250 <span class="comment">/*</span>
        !           238: 00251 <span class="comment"> * BGP4 notification message</span>
        !           239: 00252 <span class="comment"> *</span>
        !           240: 00253 <span class="comment"> * Border Gateway Protocol 4</span>
        !           241: 00254 <span class="comment"> * Base header size : 2 bytes</span>
        !           242: 00255 <span class="comment"> *</span>
        !           243: 00256 <span class="comment"> * Use payload if you need data</span>
        !           244: 00257 <span class="comment"> */</span>
        !           245: 00258 <span class="keyword">struct </span>libnet_bgp4_notification_hdr
        !           246: 00259 {
        !           247: 00260 <span class="preprocessor">#define LIBNET_BGP4_MESSAGE_HEADER_ERROR  1</span>
        !           248: 00261 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_OPEN_MESSAGE_ERROR    2</span>
        !           249: 00262 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_UPDATE_MESSAGE_ERROR  3</span>
        !           250: 00263 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_HOLD_TIMER_EXPIRED    4</span>
        !           251: 00264 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_FINITE_STATE__ERROR   5</span>
        !           252: 00265 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_CEASE                 6</span>
        !           253: 00266 <span class="preprocessor"></span>    u_int8_t err_code;
        !           254: 00267 
        !           255: 00268 <span class="comment">/* Message Header Error subcodes */</span>
        !           256: 00269 <span class="preprocessor">#define LIBNET_BGP4_CONNECTION_NOT_SYNCHRONIZED    1</span>
        !           257: 00270 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_BAD_MESSAGE_LENGTH             2</span>
        !           258: 00271 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_BAD_MESSAGE_TYPE               3</span>
        !           259: 00272 <span class="preprocessor"></span><span class="comment">/* OPEN Message Error subcodes */</span>
        !           260: 00273 <span class="preprocessor">#define LIBNET_BGP4_UNSUPPORTED_VERSION_NUMBER     1</span>
        !           261: 00274 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_BAD_PEER_AS                    2</span>
        !           262: 00275 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_BAD_BGP_IDENTIFIER             3</span>
        !           263: 00276 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_UNSUPPORTED_OPTIONAL_PARAMETER 4</span>
        !           264: 00277 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_AUTHENTICATION_FAILURE         5</span>
        !           265: 00278 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_UNACCEPTABLE_HOLD_TIME         6</span>
        !           266: 00279 <span class="preprocessor"></span><span class="comment">/* UPDATE Message Error subcodes */</span>
        !           267: 00280 <span class="preprocessor">#define LIBNET_BGP4_MALFORMED_ATTRIBUTE_LIST</span>
        !           268: 00281 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_UNRECOGNIZED_WELL_KNOWN_ATTRIBUTE</span>
        !           269: 00282 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_MISSING_WELL_KNOWN_ATTRIBUTE</span>
        !           270: 00283 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_ATTRIBUTE_FLAGS_ERROR</span>
        !           271: 00284 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_ATTRIBUTE_LENGTH_ERROR</span>
        !           272: 00285 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_INVALID_ORIGIN_ATTRIBUTE</span>
        !           273: 00286 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_AS_ROUTING_LOOP</span>
        !           274: 00287 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_INVALID_NEXT_HOP_ATTRIBUTE</span>
        !           275: 00288 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_OPTIONAL_ATTRIBUTE_ERROR</span>
        !           276: 00289 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_INVALID_NETWORK_FIELD</span>
        !           277: 00290 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_MALFORMED_AS_PATH</span>
        !           278: 00291 <span class="preprocessor"></span>    u_int8_t err_subcode;
        !           279: 00292 };
        !           280: 00293 
        !           281: 00294 
        !           282: 00295 
        !           283: 00296 <span class="comment">/*</span>
        !           284: 00297 <span class="comment"> *  CDP header</span>
        !           285: 00298 <span class="comment"> *  Cisco Discovery Protocol</span>
        !           286: 00299 <span class="comment"> *  Base header size: 8 bytes</span>
        !           287: 00300 <span class="comment"> */</span>
        !           288: 00301 
        !           289: 00302 <span class="comment">/*</span>
        !           290: 00303 <span class="comment"> *  For checksum stuff -- IANA says 135-254 is "unassigned" as of 12.2001.</span>
        !           291: 00304 <span class="comment"> *  Let's hope this one stays that way for a while!</span>
        !           292: 00305 <span class="comment"> */</span>
        !           293: 00306 <span class="preprocessor">#define LIBNET_PROTO_CDP    200</span>
        !           294: 00307 <span class="preprocessor"></span><span class="keyword">struct </span>libnet_cdp_hdr
        !           295: 00308 {
        !           296: 00309     u_int8_t cdp_version;     <span class="comment">/* version (should always be 0x01) */</span>
        !           297: 00310     u_int8_t cdp_ttl;         <span class="comment">/* time reciever should hold info in this packet */</span>
        !           298: 00311     u_int16_t cdp_sum;        <span class="comment">/* checksum */</span>
        !           299: 00312     u_int16_t cdp_type;       <span class="comment">/* type */</span>
        !           300: 00313 <span class="preprocessor">#define LIBNET_CDP_DEVID    0x1 </span><span class="comment">/* device id */</span>
        !           301: 00314 <span class="preprocessor">#define LIBNET_CDP_ADDRESS  0x2 </span><span class="comment">/* address */</span>
        !           302: 00315 <span class="preprocessor">#define LIBNET_CDP_PORTID   0x3 </span><span class="comment">/* port id */</span>
        !           303: 00316 <span class="preprocessor">#define LIBNET_CDP_CAPABIL  0x4 </span><span class="comment">/* capabilities */</span>
        !           304: 00317 <span class="preprocessor">#define LIBNET_CDP_VERSION  0x5 </span><span class="comment">/* version */</span>
        !           305: 00318 <span class="preprocessor">#define LIBNET_CDP_PLATFORM 0x6 </span><span class="comment">/* platform */</span>
        !           306: 00319 <span class="preprocessor">#define LIBNET_CDP_IPPREFIX 0x7 </span><span class="comment">/* ip prefix */</span>
        !           307: 00320     u_int16_t cdp_len;        <span class="comment">/* type + length + value */</span>
        !           308: 00321     <span class="comment">/* value information done dynamically */</span>
        !           309: 00322 
        !           310: 00323 <span class="comment">/* CDP capabilities */</span>
        !           311: 00324 <span class="preprocessor">#define LIBNET_CDP_CAP_L3R  0x01</span><span class="comment">/* performs level 3 routing */</span>
        !           312: 00325 <span class="preprocessor">#define LIBNET_CDP_CAP_L2B  0x02</span><span class="comment">/* performs level 2 transparent bridging */</span>
        !           313: 00326 <span class="preprocessor">#define LIBNET_CDP_CAP_L2SRB 0x04</span><span class="comment">/* performs level 2 sourceroute bridging */</span>
        !           314: 00327 <span class="preprocessor">#define LIBNET_CDP_CAP_L2S  0x08</span><span class="comment">/* performs level 2 switching */</span>
        !           315: 00328 <span class="preprocessor">#define LIBNET_CDP_CAP_SR   0x10</span><span class="comment">/* sends and recieves packets on a network */</span>
        !           316: 00329 <span class="preprocessor">#define LIBNET_CDP_CAP_NOI  0x20</span><span class="comment">/* does not forward IGMP on non-router ports */</span>
        !           317: 00330 <span class="preprocessor">#define LIBNET_CDP_CAP_L1F  0x40</span><span class="comment">/* provides level 1 functionality */</span>
        !           318: 00331 };
        !           319: 00332 
        !           320: 00333 
        !           321: 00334 <span class="comment">/*</span>
        !           322: 00335 <span class="comment"> *  Used as an overlay for type/len/values</span>
        !           323: 00336 <span class="comment"> */</span>
        !           324: 00337 <span class="keyword">struct </span>libnet_cdp_value_hdr
        !           325: 00338 {
        !           326: 00339     u_int16_t cdp_type;
        !           327: 00340     u_int16_t cdp_len;
        !           328: 00341 };
        !           329: 00342 
        !           330: 00343 
        !           331: 00344 <span class="comment">/*</span>
        !           332: 00345 <span class="comment"> *  DHCP header</span>
        !           333: 00346 <span class="comment"> *  Dynamic Host Configuration Protocol</span>
        !           334: 00347 <span class="comment"> *  Static header size: f0 bytes</span>
        !           335: 00348 <span class="comment"> */</span>
        !           336: 00349 <span class="keyword">struct </span>libnet_dhcpv4_hdr
        !           337: 00350 {
        !           338: 00351     u_int8_t dhcp_opcode;     <span class="comment">/* opcode */</span>
        !           339: 00352 <span class="preprocessor">#define LIBNET_DHCP_REQUEST 0x1</span>
        !           340: 00353 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_REPLY   0x2</span>
        !           341: 00354 <span class="preprocessor"></span>    u_int8_t dhcp_htype;      <span class="comment">/* hardware address type */</span>
        !           342: 00355     u_int8_t dhcp_hlen;       <span class="comment">/* hardware address length */</span>
        !           343: 00356     u_int8_t dhcp_hopcount;   <span class="comment">/* used by proxy servers */</span>
        !           344: 00357     u_int32_t dhcp_xid;        <span class="comment">/* transaction ID */</span>
        !           345: 00358     u_int16_t dhcp_secs;      <span class="comment">/* number of seconds since trying to bootstrap */</span>
        !           346: 00359     u_int16_t dhcp_flags;     <span class="comment">/* flags for DHCP, unused for BOOTP */</span>
        !           347: 00360     u_int32_t dhcp_cip;        <span class="comment">/* client's IP */</span>
        !           348: 00361     u_int32_t dhcp_yip;        <span class="comment">/* your IP */</span>
        !           349: 00362     u_int32_t dhcp_sip;        <span class="comment">/* server's IP */</span>
        !           350: 00363     u_int32_t dhcp_gip;        <span class="comment">/* gateway IP */</span>
        !           351: 00364     u_int8_t dhcp_chaddr[16]; <span class="comment">/* client hardware address */</span>
        !           352: 00365     u_int8_t dhcp_sname[64];  <span class="comment">/* server host name */</span>
        !           353: 00366     u_int8_t dhcp_file[128];  <span class="comment">/* boot file name */</span>
        !           354: 00367     u_int32_t dhcp_magic;      <span class="comment">/* BOOTP magic header */</span>
        !           355: 00368 <span class="preprocessor">#define DHCP_MAGIC                  0x63825363</span>
        !           356: 00369 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BOOTP_MIN_LEN        0x12c</span>
        !           357: 00370 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_PAD             0x00</span>
        !           358: 00371 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_SUBNETMASK      0x01</span>
        !           359: 00372 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_TIMEOFFSET      0x02</span>
        !           360: 00373 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_ROUTER          0x03</span>
        !           361: 00374 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_TIMESERVER      0x04</span>
        !           362: 00375 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_NAMESERVER      0x05</span>
        !           363: 00376 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_DNS             0x06</span>
        !           364: 00377 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_LOGSERV         0x07</span>
        !           365: 00378 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_COOKIESERV      0x08</span>
        !           366: 00379 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_LPRSERV         0x09</span>
        !           367: 00380 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_IMPSERV         0x0a</span>
        !           368: 00381 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_RESSERV         0x0b</span>
        !           369: 00382 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_HOSTNAME        0x0c</span>
        !           370: 00383 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_BOOTFILESIZE    0x0d</span>
        !           371: 00384 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_DUMPFILE        0x0e</span>
        !           372: 00385 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_DOMAINNAME      0x0f</span>
        !           373: 00386 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_SWAPSERV        0x10</span>
        !           374: 00387 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_ROOTPATH        0x11</span>
        !           375: 00388 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_EXTENPATH       0x12</span>
        !           376: 00389 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_IPFORWARD       0x13</span>
        !           377: 00390 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_SRCROUTE        0x14</span>
        !           378: 00391 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_POLICYFILTER    0x15</span>
        !           379: 00392 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MAXASMSIZE      0x16</span>
        !           380: 00393 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_IPTTL           0x17</span>
        !           381: 00394 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MTUTIMEOUT      0x18</span>
        !           382: 00395 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MTUTABLE        0x19</span>
        !           383: 00396 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MTUSIZE         0x1a</span>
        !           384: 00397 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_LOCALSUBNETS    0x1b</span>
        !           385: 00398 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_BROADCASTADDR   0x1c</span>
        !           386: 00399 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_DOMASKDISCOV    0x1d</span>
        !           387: 00400 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MASKSUPPLY      0x1e</span>
        !           388: 00401 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_DOROUTEDISC     0x1f</span>
        !           389: 00402 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_ROUTERSOLICIT   0x20</span>
        !           390: 00403 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_STATICROUTE     0x21</span>
        !           391: 00404 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_TRAILERENCAP    0x22</span>
        !           392: 00405 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_ARPTIMEOUT      0x23</span>
        !           393: 00406 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_ETHERENCAP      0x24</span>
        !           394: 00407 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_TCPTTL          0x25</span>
        !           395: 00408 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_TCPKEEPALIVE    0x26</span>
        !           396: 00409 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_TCPALIVEGARBAGE 0x27</span>
        !           397: 00410 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_NISDOMAIN       0x28</span>
        !           398: 00411 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_NISSERVERS      0x29</span>
        !           399: 00412 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_NISTIMESERV     0x2a</span>
        !           400: 00413 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_VENDSPECIFIC    0x2b</span>
        !           401: 00414 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_NBNS            0x2c</span>
        !           402: 00415 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_NBDD            0x2d</span>
        !           403: 00416 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_NBTCPIP         0x2e</span>
        !           404: 00417 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_NBTCPSCOPE      0x2f</span>
        !           405: 00418 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_XFONT           0x30</span>
        !           406: 00419 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_XDISPLAYMGR     0x31</span>
        !           407: 00420 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_DISCOVERADDR    0x32</span>
        !           408: 00421 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_LEASETIME       0x33</span>
        !           409: 00422 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_OPTIONOVERLOAD  0x34</span>
        !           410: 00423 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MESSAGETYPE     0x35</span>
        !           411: 00424 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_SERVIDENT       0x36</span>
        !           412: 00425 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_PARAMREQUEST    0x37</span>
        !           413: 00426 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MESSAGE         0x38</span>
        !           414: 00427 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MAXMSGSIZE      0x39</span>
        !           415: 00428 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_RENEWTIME       0x3a</span>
        !           416: 00429 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_REBINDTIME      0x3b</span>
        !           417: 00430 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_CLASSSID        0x3c</span>
        !           418: 00431 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_CLIENTID        0x3d</span>
        !           419: 00432 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_NISPLUSDOMAIN   0x40</span>
        !           420: 00433 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_NISPLUSSERVERS  0x41</span>
        !           421: 00434 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MOBILEIPAGENT   0x44</span>
        !           422: 00435 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_SMTPSERVER      0x45</span>
        !           423: 00436 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_POP3SERVER      0x46</span>
        !           424: 00437 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_NNTPSERVER      0x47</span>
        !           425: 00438 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_WWWSERVER       0x48</span>
        !           426: 00439 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_FINGERSERVER    0x49</span>
        !           427: 00440 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_IRCSERVER       0x4a</span>
        !           428: 00441 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_STSERVER        0x4b</span>
        !           429: 00442 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_STDASERVER      0x4c</span>
        !           430: 00443 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_END             0xff</span>
        !           431: 00444 <span class="preprocessor"></span>
        !           432: 00445 <span class="preprocessor">#define LIBNET_DHCP_MSGDISCOVER     0x01</span>
        !           433: 00446 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MSGOFFER        0x02</span>
        !           434: 00447 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MSGREQUEST      0x03</span>
        !           435: 00448 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MSGDECLINE      0x04</span>
        !           436: 00449 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MSGACK          0x05</span>
        !           437: 00450 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MSGNACK         0x06</span>
        !           438: 00451 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MSGRELEASE      0x07</span>
        !           439: 00452 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MSGINFORM       0x08</span>
        !           440: 00453 <span class="preprocessor"></span>};
        !           441: 00454 
        !           442: 00455 
        !           443: 00456 <span class="comment">/*</span>
        !           444: 00457 <span class="comment"> *  Base DNSv4 header</span>
        !           445: 00458 <span class="comment"> *  Domain Name System</span>
        !           446: 00459 <span class="comment"> *  Base header size: 12/14 bytes</span>
        !           447: 00460 <span class="comment"> */</span>
        !           448: 00461 <span class="comment">/* this little guy got left out in the cold */</span>
        !           449: 00462 <span class="preprocessor">#define LIBNET_DNS_H LIBNET_UDP_DNSV4_H</span>
        !           450: 00463 <span class="preprocessor"></span><span class="keyword">struct </span>libnet_dnsv4_hdr
        !           451: 00464 {
        !           452: 00465     u_int16_t h_len;          <span class="comment">/* length of the packet - only used with TCP */</span>
        !           453: 00466     u_int16_t id;             <span class="comment">/* DNS packet ID */</span>
        !           454: 00467     u_int16_t flags;          <span class="comment">/* DNS flags */</span>
        !           455: 00468     u_int16_t num_q;          <span class="comment">/* Number of questions */</span>
        !           456: 00469     u_int16_t num_answ_rr;    <span class="comment">/* Number of answer resource records */</span>
        !           457: 00470     u_int16_t num_auth_rr;    <span class="comment">/* Number of authority resource records */</span>
        !           458: 00471     u_int16_t num_addi_rr;    <span class="comment">/* Number of additional resource records */</span>
        !           459: 00472 };
        !           460: 00473 
        !           461: 00474 
        !           462: 00475 <span class="comment">/*</span>
        !           463: 00476 <span class="comment"> *  Ethernet II header</span>
        !           464: 00477 <span class="comment"> *  Static header size: 14 bytes</span>
        !           465: 00478 <span class="comment"> */</span>
        !           466: 00479 <span class="keyword">struct </span>libnet_ethernet_hdr
        !           467: 00480 {
        !           468: 00481     u_int8_t  ether_dhost[ETHER_ADDR_LEN];<span class="comment">/* destination ethernet address */</span>
        !           469: 00482     u_int8_t  ether_shost[ETHER_ADDR_LEN];<span class="comment">/* source ethernet address */</span>
        !           470: 00483     u_int16_t ether_type;                 <span class="comment">/* protocol */</span>
        !           471: 00484 };
        !           472: 00485 
        !           473: 00486 <span class="preprocessor">#ifndef ETHERTYPE_PUP</span>
        !           474: 00487 <span class="preprocessor"></span><span class="preprocessor">#define ETHERTYPE_PUP           0x0200  </span><span class="comment">/* PUP protocol */</span>
        !           475: 00488 <span class="preprocessor">#endif</span>
        !           476: 00489 <span class="preprocessor"></span><span class="preprocessor">#ifndef ETHERTYPE_IP</span>
        !           477: 00490 <span class="preprocessor"></span><span class="preprocessor">#define ETHERTYPE_IP            0x0800  </span><span class="comment">/* IP protocol */</span>
        !           478: 00491 <span class="preprocessor">#endif</span>
        !           479: 00492 <span class="preprocessor"></span><span class="preprocessor">#ifndef ETHERTYPE_ARP</span>
        !           480: 00493 <span class="preprocessor"></span><span class="preprocessor">#define ETHERTYPE_ARP           0x0806  </span><span class="comment">/* addr. resolution protocol */</span>
        !           481: 00494 <span class="preprocessor">#endif</span>
        !           482: 00495 <span class="preprocessor"></span><span class="preprocessor">#ifndef ETHERTYPE_REVARP</span>
        !           483: 00496 <span class="preprocessor"></span><span class="preprocessor">#define ETHERTYPE_REVARP        0x8035  </span><span class="comment">/* reverse addr. resolution protocol */</span>
        !           484: 00497 <span class="preprocessor">#endif</span>
        !           485: 00498 <span class="preprocessor"></span><span class="preprocessor">#ifndef ETHERTYPE_VLAN</span>
        !           486: 00499 <span class="preprocessor"></span><span class="preprocessor">#define ETHERTYPE_VLAN          0x8100  </span><span class="comment">/* IEEE 802.1Q VLAN tagging */</span>
        !           487: 00500 <span class="preprocessor">#endif</span>
        !           488: 00501 <span class="preprocessor"></span><span class="preprocessor">#ifndef ETHERTYPE_EAP</span>
        !           489: 00502 <span class="preprocessor"></span><span class="preprocessor">#define ETHERTYPE_EAP           0x888e  </span><span class="comment">/* IEEE 802.1X EAP authentication */</span>
        !           490: 00503 <span class="preprocessor">#endif</span>
        !           491: 00504 <span class="preprocessor"></span><span class="preprocessor">#ifndef ETHERTYPE_MPLS</span>
        !           492: 00505 <span class="preprocessor"></span><span class="preprocessor">#define ETHERTYPE_MPLS          0x8847  </span><span class="comment">/* MPLS */</span>
        !           493: 00506 <span class="preprocessor">#endif</span>
        !           494: 00507 <span class="preprocessor"></span><span class="preprocessor">#ifndef ETHERTYPE_LOOPBACK</span>
        !           495: 00508 <span class="preprocessor"></span><span class="preprocessor">#define ETHERTYPE_LOOPBACK      0x9000  </span><span class="comment">/* used to test interfaces */</span>
        !           496: 00509 <span class="preprocessor">#endif</span>
        !           497: 00510 <span class="preprocessor"></span>
        !           498: 00511 <span class="keyword">struct </span>libnet_ether_addr
        !           499: 00512 {
        !           500: 00513     u_int8_t  ether_addr_octet[6];        <span class="comment">/* Ethernet address */</span>
        !           501: 00514 };
        !           502: 00515 
        !           503: 00516 <span class="comment">/*</span>
        !           504: 00517 <span class="comment"> *  Fiber Distributed Data Interface header</span>
        !           505: 00518 <span class="comment"> *</span>
        !           506: 00519 <span class="comment"> *  Static header size: 21 bytes (LLC and 48-bit address addr only)</span>
        !           507: 00520 <span class="comment"> *</span>
        !           508: 00521 <span class="comment"> *  Note: Organization field is 3 bytes which throws off the</span>
        !           509: 00522 <span class="comment"> *        alignment of type.  Therefore fddi_type (19 bytes in) </span>
        !           510: 00523 <span class="comment"> *        is specified as two u_int8_ts.</span>
        !           511: 00524 <span class="comment"> */</span>
        !           512: 00525 <span class="keyword">struct </span>libnet_fddi_hdr
        !           513: 00526 {
        !           514: 00527     u_int8_t  fddi_frame_control;                      <span class="comment">/* Class/Format/Priority */</span>
        !           515: 00528 <span class="preprocessor">#define LIBNET_FDDI_LLC_FRAME  0x10</span>
        !           516: 00529 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_FDDI_48BIT_ADDR 0x40</span>
        !           517: 00530 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_FDDI_FC_REQD    LIBNET_FDDI_LLC_FRAME | LIBNET_FDDI_48BIT_ADDR </span>
        !           518: 00531 <span class="preprocessor"></span>    u_int8_t  fddi_dhost[FDDI_ADDR_LEN];               <span class="comment">/* destination fddi address */</span>
        !           519: 00532     u_int8_t  fddi_shost[FDDI_ADDR_LEN];               <span class="comment">/* source fddi address */</span>
        !           520: 00533     u_int8_t  fddi_llc_dsap;                           <span class="comment">/* DSAP */</span>
        !           521: 00534     u_int8_t  fddi_llc_ssap;                           <span class="comment">/* SSAP */</span>
        !           522: 00535     u_int8_t  fddi_llc_control_field;                  <span class="comment">/* Class/Format/Priority */</span>
        !           523: 00536     u_int8_t  fddi_llc_org_code[LIBNET_ORG_CODE_SIZE]; <span class="comment">/* Organization Code 3-bytes */</span>
        !           524: 00537     u_int8_t  fddi_type;                               <span class="comment">/* Protocol Type */</span>
        !           525: 00538     u_int8_t  fddi_type1;                              <span class="comment">/* see note above. */</span>
        !           526: 00539 <span class="preprocessor">#define FDDI_TYPE_IP            0x0800  </span><span class="comment">/* IP protocol */</span>
        !           527: 00540 <span class="preprocessor">#define FDDI_TYPE_ARP           0x0806  </span><span class="comment">/* addr. resolution protocol */</span>
        !           528: 00541 <span class="preprocessor">#define FDDI_TYPE_REVARP        0x8035  </span><span class="comment">/* reverse addr. resolution protocol */</span>
        !           529: 00542 };
        !           530: 00543 
        !           531: 00544 
        !           532: 00545 <span class="keyword">struct </span>libnet_fddi_addr
        !           533: 00546 {
        !           534: 00547     u_int8_t  fddi_addr_octet[6];        <span class="comment">/* FDDI address */</span>
        !           535: 00548 };
        !           536: 00549 
        !           537: 00550 
        !           538: 00551 <span class="comment">/*</span>
        !           539: 00552 <span class="comment"> * GRE header - RFC 1701 &amp; 2637</span>
        !           540: 00553 <span class="comment"> * Generic Routing Encapsulation (GRE) </span>
        !           541: 00554 <span class="comment"> * Base header size: 4 bytes</span>
        !           542: 00555 <span class="comment"> */</span>
        !           543: 00556 <span class="keyword">struct </span>libnet_gre_hdr
        !           544: 00557 {
        !           545: 00558     u_int16_t flags_ver;
        !           546: 00559 <span class="preprocessor">#define GRE_CSUM                            0x8000</span>
        !           547: 00560 <span class="preprocessor"></span><span class="preprocessor">#define GRE_ROUTING                         0x4000</span>
        !           548: 00561 <span class="preprocessor"></span><span class="preprocessor">#define GRE_KEY                             0x2000</span>
        !           549: 00562 <span class="preprocessor"></span><span class="preprocessor">#define GRE_SEQ                             0x1000</span>
        !           550: 00563 <span class="preprocessor"></span><span class="preprocessor">#define GRE_STRICT                          0x0800</span>
        !           551: 00564 <span class="preprocessor"></span><span class="preprocessor">#define GRE_REC                             0x0700</span>
        !           552: 00565 <span class="preprocessor"></span><span class="preprocessor">#define GRE_ACK                             0x0080</span>
        !           553: 00566 <span class="preprocessor"></span>
        !           554: 00567 <span class="preprocessor">#define GRE_FLAGS_MASK                          0x00F8</span>
        !           555: 00568 <span class="preprocessor"></span><span class="preprocessor">#define GRE_VERSION_MASK                        0x0007</span>
        !           556: 00569 <span class="preprocessor"></span>
        !           557: 00570 <span class="preprocessor">#define GRE_VERSION_0                           0x0000</span>
        !           558: 00571 <span class="preprocessor"></span><span class="preprocessor">#define GRE_VERSION_1                           0x0001</span>
        !           559: 00572 <span class="preprocessor"></span>
        !           560: 00573     u_int16_t type;
        !           561: 00574 <span class="preprocessor">#define GRE_SNA                                 0x0004</span>
        !           562: 00575 <span class="preprocessor"></span><span class="preprocessor">#define GRE_OSI_NETWORK_LAYER                   0x00FE</span>
        !           563: 00576 <span class="preprocessor"></span><span class="preprocessor">#define GRE_PUP                                 0x0200</span>
        !           564: 00577 <span class="preprocessor"></span><span class="preprocessor">#define GRE_XNS                                 0x0600</span>
        !           565: 00578 <span class="preprocessor"></span><span class="preprocessor">#define GRE_IP                                  0x0800</span>
        !           566: 00579 <span class="preprocessor"></span><span class="preprocessor">#define GRE_CHAOS                               0x0804</span>
        !           567: 00580 <span class="preprocessor"></span><span class="preprocessor">#define GRE_RFC_826_ARP                         0x0806</span>
        !           568: 00581 <span class="preprocessor"></span><span class="preprocessor">#define GRE_FRAME_RELAY_ARP                     0x0808</span>
        !           569: 00582 <span class="preprocessor"></span><span class="preprocessor">#define GRE_VINES                               0x0BAD</span>
        !           570: 00583 <span class="preprocessor"></span><span class="preprocessor">#define GRE_VINES_ECHO                          0x0BAE</span>
        !           571: 00584 <span class="preprocessor"></span><span class="preprocessor">#define GRE_VINES_LOOPBACK                      0x0BAF</span>
        !           572: 00585 <span class="preprocessor"></span><span class="preprocessor">#define GRE_DECNET                              0x6003</span>
        !           573: 00586 <span class="preprocessor"></span><span class="preprocessor">#define GRE_TRANSPARENT_ETHERNET_BRIDGING       0x6558</span>
        !           574: 00587 <span class="preprocessor"></span><span class="preprocessor">#define GRE_RAW_FRAME_RELAY                     0x6559</span>
        !           575: 00588 <span class="preprocessor"></span><span class="preprocessor">#define GRE_APOLLO_DOMAIN                       0x8019</span>
        !           576: 00589 <span class="preprocessor"></span><span class="preprocessor">#define GRE_ETHERTALK                           0x809B</span>
        !           577: 00590 <span class="preprocessor"></span><span class="preprocessor">#define GRE_NOVELL_IPX                          0x8137</span>
        !           578: 00591 <span class="preprocessor"></span><span class="preprocessor">#define GRE_RFC_1144_TCP_IP_COMPRESSION         0x876B</span>
        !           579: 00592 <span class="preprocessor"></span><span class="preprocessor">#define GRE_IP_AUTONOMOUS_SYSTEMS               0x876C</span>
        !           580: 00593 <span class="preprocessor"></span><span class="preprocessor">#define GRE_SECURE_DATA                         0x876D</span>
        !           581: 00594 <span class="preprocessor"></span><span class="preprocessor">#define GRE_PPP                                 0x880b </span><span class="comment">/* taken from RFC 2637 */</span>
        !           582: 00595 
        !           583: 00596     <span class="keyword">union </span>{
        !           584: 00597     <span class="keyword">struct </span>{
        !           585: 00598         u_int16_t sum;  <span class="comment">/* optional */</span>
        !           586: 00599         u_int16_t offset;    <span class="comment">/* optional */</span>
        !           587: 00600         u_int32_t key;        <span class="comment">/* optional */</span>
        !           588: 00601         u_int32_t seq;        <span class="comment">/* optional */</span>
        !           589: 00602     } _gre;
        !           590: 00603 
        !           591: 00604     <span class="keyword">struct </span>{
        !           592: 00605         u_int16_t payload_s; <span class="comment">/* optional */</span>
        !           593: 00606         u_int16_t callID;    <span class="comment">/* optional */</span>
        !           594: 00607         u_int32_t seq;        <span class="comment">/* optional */</span>
        !           595: 00608         u_int32_t ack;        <span class="comment">/* optional */</span>
        !           596: 00609     } _egre;
        !           597: 00610     }_data;
        !           598: 00611 
        !           599: 00612 <span class="preprocessor">#define gre_sum _data._gre.sum</span>
        !           600: 00613 <span class="preprocessor"></span><span class="preprocessor">#define gre_offset _data._gre.offset</span>
        !           601: 00614 <span class="preprocessor"></span><span class="preprocessor">#define gre_key _data._gre.key</span>
        !           602: 00615 <span class="preprocessor"></span><span class="preprocessor">#define gre_seq _data._gre.seq</span>
        !           603: 00616 <span class="preprocessor"></span>
        !           604: 00617 <span class="preprocessor">#define egre_payload_s _data._egre.payload_s</span>
        !           605: 00618 <span class="preprocessor"></span><span class="preprocessor">#define egre_callID _data._egre.callID</span>
        !           606: 00619 <span class="preprocessor"></span><span class="preprocessor">#define egre_seq _data._egre.seq</span>
        !           607: 00620 <span class="preprocessor"></span><span class="preprocessor">#define egre_ack _data._egre.ack</span>
        !           608: 00621 <span class="preprocessor"></span>};
        !           609: 00622 
        !           610: 00623 
        !           611: 00624 <span class="preprocessor">#ifndef IPPROTO_GRE</span>
        !           612: 00625 <span class="preprocessor"></span><span class="preprocessor">#define IPPROTO_GRE 47</span>
        !           613: 00626 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           614: 00627 <span class="preprocessor"></span>
        !           615: 00628 <span class="comment">/*</span>
        !           616: 00629 <span class="comment"> * Source Route Entries (SRE)</span>
        !           617: 00630 <span class="comment"> * This is used for GRE as the Routing field is a list of SREs - RFC 1701</span>
        !           618: 00631 <span class="comment"> * Base header size: 4 bytes</span>
        !           619: 00632 <span class="comment"> */</span>
        !           620: 00633 <span class="keyword">struct </span>libnet_gre_sre_hdr
        !           621: 00634 {
        !           622: 00635     u_int16_t af;  <span class="comment">/* address familly */</span>
        !           623: 00636     u_int8_t sre_offset;
        !           624: 00637     u_int8_t sre_length;
        !           625: 00638     u_int8_t *routing;
        !           626: 00639 };
        !           627: 00640 
        !           628: 00641 
        !           629: 00642 <span class="comment">/*</span>
        !           630: 00643 <span class="comment"> *  IPv4 header</span>
        !           631: 00644 <span class="comment"> *  Internet Protocol, version 4</span>
        !           632: 00645 <span class="comment"> *  Static header size: 20 bytes</span>
        !           633: 00646 <span class="comment"> */</span>
        !           634: 00647 <span class="keyword">struct </span>libnet_ipv4_hdr
        !           635: 00648 {
        !           636: 00649 <span class="preprocessor">#if (LIBNET_LIL_ENDIAN)</span>
        !           637: 00650 <span class="preprocessor"></span>    u_int8_t ip_hl:4,      <span class="comment">/* header length */</span>
        !           638: 00651            ip_v:4;         <span class="comment">/* version */</span>
        !           639: 00652 <span class="preprocessor">#endif</span>
        !           640: 00653 <span class="preprocessor"></span><span class="preprocessor">#if (LIBNET_BIG_ENDIAN)</span>
        !           641: 00654 <span class="preprocessor"></span>    u_int8_t ip_v:4,       <span class="comment">/* version */</span>
        !           642: 00655            ip_hl:4;        <span class="comment">/* header length */</span>
        !           643: 00656 <span class="preprocessor">#endif</span>
        !           644: 00657 <span class="preprocessor"></span>    u_int8_t ip_tos;       <span class="comment">/* type of service */</span>
        !           645: 00658 <span class="preprocessor">#ifndef IPTOS_LOWDELAY</span>
        !           646: 00659 <span class="preprocessor"></span><span class="preprocessor">#define IPTOS_LOWDELAY      0x10</span>
        !           647: 00660 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           648: 00661 <span class="preprocessor"></span><span class="preprocessor">#ifndef IPTOS_THROUGHPUT</span>
        !           649: 00662 <span class="preprocessor"></span><span class="preprocessor">#define IPTOS_THROUGHPUT    0x08</span>
        !           650: 00663 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           651: 00664 <span class="preprocessor"></span><span class="preprocessor">#ifndef IPTOS_RELIABILITY</span>
        !           652: 00665 <span class="preprocessor"></span><span class="preprocessor">#define IPTOS_RELIABILITY   0x04</span>
        !           653: 00666 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           654: 00667 <span class="preprocessor"></span><span class="preprocessor">#ifndef IPTOS_LOWCOST</span>
        !           655: 00668 <span class="preprocessor"></span><span class="preprocessor">#define IPTOS_LOWCOST       0x02</span>
        !           656: 00669 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           657: 00670 <span class="preprocessor"></span>    u_int16_t ip_len;         <span class="comment">/* total length */</span>
        !           658: 00671     u_int16_t ip_id;          <span class="comment">/* identification */</span>
        !           659: 00672     u_int16_t ip_off;
        !           660: 00673 <span class="preprocessor">#ifndef IP_RF</span>
        !           661: 00674 <span class="preprocessor"></span><span class="preprocessor">#define IP_RF 0x8000        </span><span class="comment">/* reserved fragment flag */</span>
        !           662: 00675 <span class="preprocessor">#endif</span>
        !           663: 00676 <span class="preprocessor"></span><span class="preprocessor">#ifndef IP_DF</span>
        !           664: 00677 <span class="preprocessor"></span><span class="preprocessor">#define IP_DF 0x4000        </span><span class="comment">/* dont fragment flag */</span>
        !           665: 00678 <span class="preprocessor">#endif</span>
        !           666: 00679 <span class="preprocessor"></span><span class="preprocessor">#ifndef IP_MF</span>
        !           667: 00680 <span class="preprocessor"></span><span class="preprocessor">#define IP_MF 0x2000        </span><span class="comment">/* more fragments flag */</span>
        !           668: 00681 <span class="preprocessor">#endif </span>
        !           669: 00682 <span class="preprocessor"></span><span class="preprocessor">#ifndef IP_OFFMASK</span>
        !           670: 00683 <span class="preprocessor"></span><span class="preprocessor">#define IP_OFFMASK 0x1fff   </span><span class="comment">/* mask for fragmenting bits */</span>
        !           671: 00684 <span class="preprocessor">#endif</span>
        !           672: 00685 <span class="preprocessor"></span>    u_int8_t ip_ttl;          <span class="comment">/* time to live */</span>
        !           673: 00686     u_int8_t ip_p;            <span class="comment">/* protocol */</span>
        !           674: 00687     u_int16_t ip_sum;         <span class="comment">/* checksum */</span>
        !           675: 00688     <span class="keyword">struct </span>in_addr ip_src, ip_dst; <span class="comment">/* source and dest address */</span>
        !           676: 00689 };
        !           677: 00690 
        !           678: 00691 <span class="comment">/*</span>
        !           679: 00692 <span class="comment"> *  IP options</span>
        !           680: 00693 <span class="comment"> */</span>
        !           681: 00694 <span class="preprocessor">#ifndef IPOPT_EOL</span>
        !           682: 00695 <span class="preprocessor"></span><span class="preprocessor">#define IPOPT_EOL       0   </span><span class="comment">/* end of option list */</span>
        !           683: 00696 <span class="preprocessor">#endif</span>
        !           684: 00697 <span class="preprocessor"></span><span class="preprocessor">#ifndef IPOPT_NOP</span>
        !           685: 00698 <span class="preprocessor"></span><span class="preprocessor">#define IPOPT_NOP       1   </span><span class="comment">/* no operation */</span>
        !           686: 00699 <span class="preprocessor">#endif   </span>
        !           687: 00700 <span class="preprocessor"></span><span class="preprocessor">#ifndef IPOPT_RR</span>
        !           688: 00701 <span class="preprocessor"></span><span class="preprocessor">#define IPOPT_RR        7   </span><span class="comment">/* record packet route */</span>
        !           689: 00702 <span class="preprocessor">#endif</span>
        !           690: 00703 <span class="preprocessor"></span><span class="preprocessor">#ifndef IPOPT_TS</span>
        !           691: 00704 <span class="preprocessor"></span><span class="preprocessor">#define IPOPT_TS        68  </span><span class="comment">/* timestamp */</span>
        !           692: 00705 <span class="preprocessor">#endif</span>
        !           693: 00706 <span class="preprocessor"></span><span class="preprocessor">#ifndef IPOPT_SECURITY</span>
        !           694: 00707 <span class="preprocessor"></span><span class="preprocessor">#define IPOPT_SECURITY  130 </span><span class="comment">/* provide s,c,h,tcc */</span>   
        !           695: 00708 <span class="preprocessor">#endif</span>
        !           696: 00709 <span class="preprocessor"></span><span class="preprocessor">#ifndef IPOPT_LSRR</span>
        !           697: 00710 <span class="preprocessor"></span><span class="preprocessor">#define IPOPT_LSRR      131 </span><span class="comment">/* loose source route */</span>
        !           698: 00711 <span class="preprocessor">#endif</span>
        !           699: 00712 <span class="preprocessor"></span><span class="preprocessor">#ifndef IPOPT_SATID</span>
        !           700: 00713 <span class="preprocessor"></span><span class="preprocessor">#define IPOPT_SATID     136 </span><span class="comment">/* satnet id */</span>
        !           701: 00714 <span class="preprocessor">#endif</span>
        !           702: 00715 <span class="preprocessor"></span><span class="preprocessor">#ifndef IPOPT_SSRR</span>
        !           703: 00716 <span class="preprocessor"></span><span class="preprocessor">#define IPOPT_SSRR      137 </span><span class="comment">/* strict source route */</span>
        !           704: 00717 <span class="preprocessor">#endif</span>
        !           705: 00718 <span class="preprocessor"></span>
        !           706: 00719 <span class="keyword">struct </span>libnet_in6_addr
        !           707: 00720 {
        !           708: 00721     <span class="keyword">union</span>
        !           709: 00722 <span class="keyword">    </span>{
        !           710: 00723         u_int8_t   __u6_addr8[16];
        !           711: 00724         u_int16_t  __u6_addr16[8];
        !           712: 00725         u_int32_t  __u6_addr32[4];
        !           713: 00726     } __u6_addr;            <span class="comment">/* 128-bit IP6 address */</span>
        !           714: 00727 };
        !           715: 00728 <span class="preprocessor">#define libnet_s6_addr __u6_addr.__u6_addr8</span>
        !           716: 00729 <span class="preprocessor"></span>
        !           717: 00730 <span class="comment">/*</span>
        !           718: 00731 <span class="comment"> *  IPv6 header</span>
        !           719: 00732 <span class="comment"> *  Internet Protocol, version 6</span>
        !           720: 00733 <span class="comment"> *  Static header size: 40 bytes</span>
        !           721: 00734 <span class="comment"> */</span>
        !           722: 00735 <span class="keyword">struct </span>libnet_ipv6_hdr
        !           723: 00736 {
        !           724: 00737     u_int8_t ip_flags[4];     <span class="comment">/* version, traffic class, flow label */</span>
        !           725: 00738     u_int16_t ip_len;         <span class="comment">/* total length */</span>
        !           726: 00739     u_int8_t ip_nh;           <span class="comment">/* next header */</span>
        !           727: 00740     u_int8_t ip_hl;           <span class="comment">/* hop limit */</span>
        !           728: 00741     <span class="keyword">struct </span>libnet_in6_addr ip_src, ip_dst; <span class="comment">/* source and dest address */</span>
        !           729: 00742 
        !           730: 00743 };
        !           731: 00744 
        !           732: 00745 <span class="comment">/*</span>
        !           733: 00746 <span class="comment"> *  IPv6 frag header</span>
        !           734: 00747 <span class="comment"> *  Internet Protocol, version 6</span>
        !           735: 00748 <span class="comment"> *  Static header size: 8 bytes</span>
        !           736: 00749 <span class="comment"> */</span>
        !           737: 00750 <span class="preprocessor">#define LIBNET_IPV6_NH_FRAGMENT 44</span>
        !           738: 00751 <span class="preprocessor"></span><span class="keyword">struct </span>libnet_ipv6_frag_hdr
        !           739: 00752 {
        !           740: 00753     u_int8_t ip_nh;          <span class="comment">/* next header */</span>
        !           741: 00754     u_int8_t ip_reserved;    <span class="comment">/* reserved */</span>
        !           742: 00755     u_int16_t ip_frag;       <span class="comment">/* fragmentation stuff */</span>
        !           743: 00756     u_int32_t ip_id;         <span class="comment">/* id */</span>
        !           744: 00757 };
        !           745: 00758 
        !           746: 00759 <span class="comment">/*</span>
        !           747: 00760 <span class="comment"> *  IPv6 routing header</span>
        !           748: 00761 <span class="comment"> *  Internet Protocol, version 6</span>
        !           749: 00762 <span class="comment"> *  Base header size: 4 bytes</span>
        !           750: 00763 <span class="comment"> */</span>
        !           751: 00764 <span class="preprocessor">#define LIBNET_IPV6_NH_ROUTING  43</span>
        !           752: 00765 <span class="preprocessor"></span><span class="keyword">struct </span>libnet_ipv6_routing_hdr
        !           753: 00766 {
        !           754: 00767     u_int8_t ip_nh;          <span class="comment">/* next header */</span>
        !           755: 00768     u_int8_t ip_len;         <span class="comment">/* length of header in 8 octet units (sans 1st) */</span>
        !           756: 00769     u_int8_t ip_rtype;       <span class="comment">/* routing type */</span>
        !           757: 00770     u_int8_t ip_segments;    <span class="comment">/* segments left */</span>
        !           758: 00771     <span class="comment">/* routing information allocated dynamically */</span>
        !           759: 00772 };
        !           760: 00773 
        !           761: 00774 <span class="comment">/*</span>
        !           762: 00775 <span class="comment"> *  IPv6 destination options header</span>
        !           763: 00776 <span class="comment"> *  Internet Protocol, version 6</span>
        !           764: 00777 <span class="comment"> *  Base header size: 2 bytes</span>
        !           765: 00778 <span class="comment"> */</span>
        !           766: 00779 <span class="preprocessor">#define LIBNET_IPV6_NH_DESTOPTS 60</span>
        !           767: 00780 <span class="preprocessor"></span><span class="keyword">struct </span>libnet_ipv6_destopts_hdr
        !           768: 00781 {
        !           769: 00782     u_int8_t ip_nh;          <span class="comment">/* next header */</span>
        !           770: 00783     u_int8_t ip_len;         <span class="comment">/* length of header in 8 octet units (sans 1st) */</span>
        !           771: 00784     <span class="comment">/* destination options information allocated dynamically */</span>
        !           772: 00785 };
        !           773: 00786 
        !           774: 00787 <span class="comment">/*</span>
        !           775: 00788 <span class="comment"> *  IPv6 hop by hop options header</span>
        !           776: 00789 <span class="comment"> *  Internet Protocol, version 6</span>
        !           777: 00790 <span class="comment"> *  Base header size: 2 bytes</span>
        !           778: 00791 <span class="comment"> */</span>
        !           779: 00792 <span class="preprocessor">#define LIBNET_IPV6_NH_HBH      0</span>
        !           780: 00793 <span class="preprocessor"></span><span class="keyword">struct </span>libnet_ipv6_hbhopts_hdr
        !           781: 00794 {
        !           782: 00795     u_int8_t ip_nh;          <span class="comment">/* next header */</span>
        !           783: 00796     u_int8_t ip_len;         <span class="comment">/* length of header in 8 octet units (sans 1st) */</span>
        !           784: 00797     <span class="comment">/* destination options information allocated dynamically */</span>
        !           785: 00798 };
        !           786: 00799 
        !           787: 00800 <span class="comment">/*</span>
        !           788: 00801 <span class="comment"> *  ICMP6 header</span>
        !           789: 00802 <span class="comment"> *  Internet Control Message Protocol v6</span>
        !           790: 00803 <span class="comment"> *  Base header size: 8 bytes</span>
        !           791: 00804 <span class="comment"> */</span>
        !           792: 00805 <span class="preprocessor">#ifndef IPPROTO_ICMP6</span>
        !           793: 00806 <span class="preprocessor"></span><span class="preprocessor">#define IPPROTO_ICMP6   0x3a</span>
        !           794: 00807 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           795: 00808 <span class="preprocessor"></span><span class="keyword">struct </span>libnet_icmpv6_hdr
        !           796: 00809 {
        !           797: 00810     u_int8_t icmp_type;       <span class="comment">/* ICMP type */</span>
        !           798: 00811 <span class="preprocessor">#ifndef ICMP6_ECHO</span>
        !           799: 00812 <span class="preprocessor"></span><span class="preprocessor">#define ICMP6_ECHO          128</span>
        !           800: 00813 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           801: 00814 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP6_ECHOREPLY</span>
        !           802: 00815 <span class="preprocessor"></span><span class="preprocessor">#define ICMP6_ECHOREPLY     129</span>
        !           803: 00816 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           804: 00817 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP6_UNREACH</span>
        !           805: 00818 <span class="preprocessor"></span><span class="preprocessor">#define ICMP6_UNREACH       1</span>
        !           806: 00819 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           807: 00820 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP6_PKTTOOBIG</span>
        !           808: 00821 <span class="preprocessor"></span><span class="preprocessor">#define ICMP6_PKTTOOBIG     2</span>
        !           809: 00822 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           810: 00823 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP6_TIMXCEED</span>
        !           811: 00824 <span class="preprocessor"></span><span class="preprocessor">#define ICMP6_TIMXCEED      3</span>
        !           812: 00825 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           813: 00826 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP6_PARAMPROB</span>
        !           814: 00827 <span class="preprocessor"></span><span class="preprocessor">#define ICMP6_PARAMPROB     4</span>
        !           815: 00828 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           816: 00829 <span class="preprocessor"></span>    u_int8_t icmp_code;       <span class="comment">/* ICMP code */</span>
        !           817: 00830     u_int16_t icmp_sum;       <span class="comment">/* ICMP Checksum */</span>
        !           818: 00831     u_int16_t id;             <span class="comment">/* ICMP id */</span>
        !           819: 00832     u_int16_t seq;            <span class="comment">/* ICMP sequence number */</span>
        !           820: 00833 };
        !           821: 00834 
        !           822: 00835 
        !           823: 00836 
        !           824: 00837 <span class="comment">/*</span>
        !           825: 00838 <span class="comment"> *  ICMP header</span>
        !           826: 00839 <span class="comment"> *  Internet Control Message Protocol</span>
        !           827: 00840 <span class="comment"> *  Base header size: 4 bytes</span>
        !           828: 00841 <span class="comment"> */</span>
        !           829: 00842 <span class="keyword">struct </span>libnet_icmpv4_hdr
        !           830: 00843 {
        !           831: 00844     u_int8_t icmp_type;       <span class="comment">/* ICMP type */</span>
        !           832: 00845 <span class="preprocessor">#ifndef     ICMP_ECHOREPLY</span>
        !           833: 00846 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_ECHOREPLY                  0</span>
        !           834: 00847 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           835: 00848 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_UNREACH</span>
        !           836: 00849 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_UNREACH                    3</span>
        !           837: 00850 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           838: 00851 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_SOURCEQUENCH</span>
        !           839: 00852 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_SOURCEQUENCH               4</span>
        !           840: 00853 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           841: 00854 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_REDIRECT</span>
        !           842: 00855 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_REDIRECT                   5</span>
        !           843: 00856 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           844: 00857 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_ECHO</span>
        !           845: 00858 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_ECHO                       8</span>
        !           846: 00859 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           847: 00860 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_ROUTERADVERT</span>
        !           848: 00861 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_ROUTERADVERT               9</span>
        !           849: 00862 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           850: 00863 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_ROUTERSOLICIT</span>
        !           851: 00864 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_ROUTERSOLICIT              10</span>
        !           852: 00865 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           853: 00866 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_TIMXCEED</span>
        !           854: 00867 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_TIMXCEED                   11</span>
        !           855: 00868 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           856: 00869 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_PARAMPROB</span>
        !           857: 00870 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_PARAMPROB                  12</span>
        !           858: 00871 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           859: 00872 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_TSTAMP</span>
        !           860: 00873 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_TSTAMP                     13</span>
        !           861: 00874 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           862: 00875 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_TSTAMPREPLY</span>
        !           863: 00876 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_TSTAMPREPLY                14</span>
        !           864: 00877 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           865: 00878 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_IREQ</span>
        !           866: 00879 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_IREQ                       15</span>
        !           867: 00880 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           868: 00881 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_IREQREPLY</span>
        !           869: 00882 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_IREQREPLY                  16</span>
        !           870: 00883 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           871: 00884 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_MASKREQ</span>
        !           872: 00885 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_MASKREQ                    17</span>
        !           873: 00886 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           874: 00887 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_MASKREPLY</span>
        !           875: 00888 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_MASKREPLY                  18</span>
        !           876: 00889 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           877: 00890 <span class="preprocessor"></span>    u_int8_t icmp_code;       <span class="comment">/* ICMP code */</span>
        !           878: 00891 <span class="preprocessor">#ifndef     ICMP_UNREACH_NET</span>
        !           879: 00892 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_UNREACH_NET                0</span>
        !           880: 00893 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           881: 00894 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_UNREACH_HOST</span>
        !           882: 00895 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_UNREACH_HOST               1</span>
        !           883: 00896 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           884: 00897 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_UNREACH_PROTOCOL</span>
        !           885: 00898 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_UNREACH_PROTOCOL           2</span>
        !           886: 00899 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           887: 00900 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_UNREACH_PORT</span>
        !           888: 00901 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_UNREACH_PORT               3</span>
        !           889: 00902 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           890: 00903 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_UNREACH_NEEDFRAG</span>
        !           891: 00904 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_UNREACH_NEEDFRAG           4</span>
        !           892: 00905 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           893: 00906 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_UNREACH_SRCFAIL</span>
        !           894: 00907 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_UNREACH_SRCFAIL            5</span>
        !           895: 00908 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           896: 00909 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_UNREACH_NET_UNKNOWN</span>
        !           897: 00910 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_UNREACH_NET_UNKNOWN        6</span>
        !           898: 00911 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           899: 00912 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_UNREACH_HOST_UNKNOWN</span>
        !           900: 00913 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_UNREACH_HOST_UNKNOWN       7</span>
        !           901: 00914 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           902: 00915 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_UNREACH_ISOLATED</span>
        !           903: 00916 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_UNREACH_ISOLATED           8</span>
        !           904: 00917 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           905: 00918 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_UNREACH_NET_PROHIB</span>
        !           906: 00919 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_UNREACH_NET_PROHIB         9</span>
        !           907: 00920 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           908: 00921 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_UNREACH_HOST_PROHIB</span>
        !           909: 00922 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_UNREACH_HOST_PROHIB        10</span>
        !           910: 00923 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           911: 00924 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_UNREACH_TOSNET</span>
        !           912: 00925 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_UNREACH_TOSNET             11</span>
        !           913: 00926 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           914: 00927 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_UNREACH_TOSHOST</span>
        !           915: 00928 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_UNREACH_TOSHOST            12</span>
        !           916: 00929 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           917: 00930 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_UNREACH_FILTER_PROHIB</span>
        !           918: 00931 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_UNREACH_FILTER_PROHIB      13</span>
        !           919: 00932 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           920: 00933 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_UNREACH_HOST_PRECEDENCE</span>
        !           921: 00934 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_UNREACH_HOST_PRECEDENCE    14</span>
        !           922: 00935 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           923: 00936 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_UNREACH_PRECEDENCE_CUTOFF</span>
        !           924: 00937 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_UNREACH_PRECEDENCE_CUTOFF  15</span>
        !           925: 00938 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           926: 00939 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_REDIRECT_NET</span>
        !           927: 00940 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_REDIRECT_NET               0</span>
        !           928: 00941 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           929: 00942 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_REDIRECT_HOST</span>
        !           930: 00943 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_REDIRECT_HOST              1</span>
        !           931: 00944 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           932: 00945 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_REDIRECT_TOSNET</span>
        !           933: 00946 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_REDIRECT_TOSNET            2</span>
        !           934: 00947 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           935: 00948 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_REDIRECT_TOSHOST</span>
        !           936: 00949 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_REDIRECT_TOSHOST           3</span>
        !           937: 00950 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           938: 00951 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_TIMXCEED_INTRANS</span>
        !           939: 00952 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_TIMXCEED_INTRANS           0</span>
        !           940: 00953 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           941: 00954 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_TIMXCEED_REASS</span>
        !           942: 00955 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_TIMXCEED_REASS             1</span>
        !           943: 00956 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           944: 00957 <span class="preprocessor"></span><span class="preprocessor">#ifndef     ICMP_PARAMPROB_OPTABSENT</span>
        !           945: 00958 <span class="preprocessor"></span><span class="preprocessor">#define     ICMP_PARAMPROB_OPTABSENT        1</span>
        !           946: 00959 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !           947: 00960 <span class="preprocessor"></span>
        !           948: 00961     u_int16_t icmp_sum;   <span class="comment">/* ICMP Checksum */</span>
        !           949: 00962 
        !           950: 00963     <span class="keyword">union</span>
        !           951: 00964 <span class="keyword">    </span>{
        !           952: 00965         <span class="keyword">struct</span>
        !           953: 00966 <span class="keyword">        </span>{
        !           954: 00967             u_int16_t id; <span class="comment">/* ICMP id */</span>
        !           955: 00968             u_int16_t seq;<span class="comment">/* ICMP sequence number */</span>
        !           956: 00969         } echo;
        !           957: 00970 
        !           958: 00971 <span class="preprocessor">#undef icmp_id</span>
        !           959: 00972 <span class="preprocessor"></span><span class="preprocessor">#undef icmp_seq</span>
        !           960: 00973 <span class="preprocessor"></span><span class="preprocessor">#define icmp_id     hun.echo.id</span>
        !           961: 00974 <span class="preprocessor"></span><span class="preprocessor">#define icmp_seq    hun.echo.seq</span>
        !           962: 00975 <span class="preprocessor"></span> 
        !           963: 00976         u_int32_t gateway; <span class="comment">/* gateway host */</span>
        !           964: 00977         <span class="keyword">struct</span>
        !           965: 00978 <span class="keyword">        </span>{
        !           966: 00979             u_int16_t pad;<span class="comment">/* padding */</span>
        !           967: 00980             u_int16_t mtu;<span class="comment">/* MTU size */</span>
        !           968: 00981         } frag;
        !           969: 00982     } hun;
        !           970: 00983     <span class="keyword">union</span>
        !           971: 00984 <span class="keyword">    </span>{
        !           972: 00985         <span class="keyword">struct</span>
        !           973: 00986 <span class="keyword">        </span>{
        !           974: 00987             n_time its_otime;
        !           975: 00988             n_time its_rtime;
        !           976: 00989             n_time its_ttime;
        !           977: 00990         } ts;
        !           978: 00991         <span class="keyword">struct</span>
        !           979: 00992 <span class="keyword">        </span>{
        !           980: 00993             <span class="keyword">struct </span>libnet_ipv4_hdr idi_ip;
        !           981: 00994             <span class="comment">/* options and then 64 bits of data */</span>
        !           982: 00995         } ip;
        !           983: 00996         u_int32_t mask;
        !           984: 00997         int8_t data[1];
        !           985: 00998 
        !           986: 00999 <span class="preprocessor">#undef icmp_mask</span>
        !           987: 01000 <span class="preprocessor"></span><span class="preprocessor">#define icmp_mask    dun.mask</span>
        !           988: 01001 <span class="preprocessor"></span><span class="preprocessor">#undef icmp_data</span>
        !           989: 01002 <span class="preprocessor"></span><span class="preprocessor">#define icmp_data    dun.data</span>
        !           990: 01003 <span class="preprocessor"></span>
        !           991: 01004 <span class="preprocessor">#undef icmp_otime</span>
        !           992: 01005 <span class="preprocessor"></span><span class="preprocessor">#define icmp_otime   dun.ts.its_otime</span>
        !           993: 01006 <span class="preprocessor"></span><span class="preprocessor">#undef icmp_rtime</span>
        !           994: 01007 <span class="preprocessor"></span><span class="preprocessor">#define icmp_rtime   dun.ts.its_rtime</span>
        !           995: 01008 <span class="preprocessor"></span><span class="preprocessor">#undef icmp_ttime</span>
        !           996: 01009 <span class="preprocessor"></span><span class="preprocessor">#define icmp_ttime   dun.ts.its_ttime</span>
        !           997: 01010 <span class="preprocessor"></span>    }dun;
        !           998: 01011 };
        !           999: 01012 
        !          1000: 01013 
        !          1001: 01014 <span class="comment">/*</span>
        !          1002: 01015 <span class="comment"> *  IGMP header</span>
        !          1003: 01016 <span class="comment"> *  Internet Group Message Protocol</span>
        !          1004: 01017 <span class="comment"> *  Static header size: 8 bytes</span>
        !          1005: 01018 <span class="comment"> */</span>
        !          1006: 01019 <span class="keyword">struct </span>libnet_igmp_hdr
        !          1007: 01020 {
        !          1008: 01021     u_int8_t igmp_type;       <span class="comment">/* IGMP type */</span>
        !          1009: 01022 <span class="preprocessor">#ifndef IGMP_MEMBERSHIP_QUERY</span>
        !          1010: 01023 <span class="preprocessor"></span><span class="preprocessor">#define IGMP_MEMBERSHIP_QUERY           0x11    </span><span class="comment">/* membership query */</span>
        !          1011: 01024 <span class="preprocessor">#endif</span>
        !          1012: 01025 <span class="preprocessor"></span><span class="preprocessor">#ifndef IGMP_V1_MEMBERSHIP_REPORT</span>
        !          1013: 01026 <span class="preprocessor"></span><span class="preprocessor">#define IGMP_V1_MEMBERSHIP_REPORT       0x12    </span><span class="comment">/* Ver. 1 membership report */</span>
        !          1014: 01027 <span class="preprocessor">#endif</span>
        !          1015: 01028 <span class="preprocessor"></span><span class="preprocessor">#ifndef IGMP_V2_MEMBERSHIP_REPORT</span>
        !          1016: 01029 <span class="preprocessor"></span><span class="preprocessor">#define IGMP_V2_MEMBERSHIP_REPORT       0x16    </span><span class="comment">/* Ver. 2 membership report */</span>
        !          1017: 01030 <span class="preprocessor">#endif</span>
        !          1018: 01031 <span class="preprocessor"></span><span class="preprocessor">#ifndef IGMP_LEAVE_GROUP</span>
        !          1019: 01032 <span class="preprocessor"></span><span class="preprocessor">#define IGMP_LEAVE_GROUP                0x17    </span><span class="comment">/* Leave-group message */</span>
        !          1020: 01033 <span class="preprocessor">#endif</span>
        !          1021: 01034 <span class="preprocessor"></span>    u_int8_t igmp_code;       <span class="comment">/* IGMP code */</span>
        !          1022: 01035     u_int16_t igmp_sum;       <span class="comment">/* IGMP checksum */</span>
        !          1023: 01036     <span class="keyword">struct </span>in_addr igmp_group;<span class="comment">/* IGMP host IP */</span>
        !          1024: 01037 };
        !          1025: 01038 
        !          1026: 01039 
        !          1027: 01040 <span class="comment">/*</span>
        !          1028: 01041 <span class="comment"> *  IPSEC header</span>
        !          1029: 01042 <span class="comment"> *  Internet Protocol Security Protocol</span>
        !          1030: 01043 <span class="comment"> *  Encapsulating Security Payload Header Static header size: 12 bytes</span>
        !          1031: 01044 <span class="comment"> *  Encapsulating Security Payload Footer Base header size: 2 bytes</span>
        !          1032: 01045 <span class="comment"> *  Authentication Header Static Size: 16 bytes</span>
        !          1033: 01046 <span class="comment"> */</span>
        !          1034: 01047 <span class="preprocessor">#ifndef IPPROTO_ESP</span>
        !          1035: 01048 <span class="preprocessor"></span><span class="preprocessor">#define IPPROTO_ESP 50      </span><span class="comment">/* not everyone's got this */</span>
        !          1036: 01049 <span class="preprocessor">#endif</span>
        !          1037: 01050 <span class="preprocessor"></span><span class="keyword">struct </span>libnet_esp_hdr
        !          1038: 01051 {
        !          1039: 01052    u_int32_t esp_spi;          <span class="comment">/* security parameter index */</span>
        !          1040: 01053    u_int32_t esp_seq;          <span class="comment">/* ESP sequence number */</span>
        !          1041: 01054    u_int32_t esp_iv;           <span class="comment">/* initialization vector */</span>
        !          1042: 01055 };
        !          1043: 01056 
        !          1044: 01057 <span class="keyword">struct </span>libnet_esp_ftr
        !          1045: 01058 {
        !          1046: 01059     u_int8_t esp_pad_len;     <span class="comment">/* padding length */</span>
        !          1047: 01060     u_int8_t esp_nh;     <span class="comment">/* next header pointer */</span>
        !          1048: 01061     int8_t *esp_auth;         <span class="comment">/* authentication data */</span>
        !          1049: 01062 };
        !          1050: 01063  
        !          1051: 01064 <span class="preprocessor">#ifndef IPPROTO_AH</span>
        !          1052: 01065 <span class="preprocessor"></span><span class="preprocessor">#define IPPROTO_AH 51       </span><span class="comment">/* not everyone's got this */</span>
        !          1053: 01066 <span class="preprocessor">#endif</span>
        !          1054: 01067 <span class="preprocessor"></span><span class="keyword">struct </span>libnet_ah_hdr
        !          1055: 01068 {
        !          1056: 01069     u_int8_t ah_nh;      <span class="comment">/* next header */</span>
        !          1057: 01070     u_int8_t ah_len;          <span class="comment">/* payload length */</span>
        !          1058: 01071     u_int16_t ah_res;         <span class="comment">/* reserved */</span>
        !          1059: 01072     u_int32_t ah_spi;          <span class="comment">/* security parameter index  */</span>
        !          1060: 01073     u_int32_t ah_seq;          <span class="comment">/* AH sequence number */</span>
        !          1061: 01074     u_int32_t ah_auth;         <span class="comment">/* authentication data */</span>
        !          1062: 01075 };
        !          1063: 01076 
        !          1064: 01077 
        !          1065: 01078 <span class="comment">/*</span>
        !          1066: 01079 <span class="comment"> *  ISL header</span>
        !          1067: 01080 <span class="comment"> *  Cisco Inter-Switch Link</span>
        !          1068: 01081 <span class="comment"> *  Static header size: 26 bytes</span>
        !          1069: 01082 <span class="comment"> */</span>
        !          1070: 01083 <span class="comment">/*</span>
        !          1071: 01084 <span class="comment"> *  For checksum stuff -- IANA says 135-254 is "unassigned" as of 12.2001.</span>
        !          1072: 01085 <span class="comment"> *  Let's hope this one stays that way for a while!</span>
        !          1073: 01086 <span class="comment"> */</span>
        !          1074: 01087 <span class="preprocessor">#define LIBNET_PROTO_ISL    201</span>
        !          1075: 01088 <span class="preprocessor"></span><span class="keyword">struct </span>libnet_isl_hdr
        !          1076: 01089 {
        !          1077: 01090     u_int8_t isl_dhost[5];    <span class="comment">/* destination address "01:00:0c:00:00" */</span>
        !          1078: 01091 <span class="preprocessor">#if (LIBNET_LIL_ENDIAN)</span>
        !          1079: 01092 <span class="preprocessor"></span>    u_int8_t isl_type:4,      <span class="comment">/* type of frame */</span>
        !          1080: 01093            isl_user:4;      <span class="comment">/* user defined bits */</span>
        !          1081: 01094 <span class="preprocessor">#endif</span>
        !          1082: 01095 <span class="preprocessor"></span><span class="preprocessor">#if (LIBNET_BIG_ENDIAN)</span>
        !          1083: 01096 <span class="preprocessor"></span>    u_int8_t isl_user:4,      <span class="comment">/* user defined bits */</span>
        !          1084: 01097            isl_type:4;      <span class="comment">/* type of frame */</span>
        !          1085: 01098 <span class="preprocessor">#endif</span>
        !          1086: 01099 <span class="preprocessor"></span>    u_int8_t isl_shost[6];    <span class="comment">/* source address */</span>
        !          1087: 01100     u_int16_t isl_len;        <span class="comment">/* total length of packet - 18 bytes */</span>
        !          1088: 01101     u_int8_t isl_snap[6];     <span class="comment">/* 0xaaaa03 + vendor code */</span>
        !          1089: 01102     u_int16_t isl_vid;        <span class="comment">/* 15 bit VLAN ID, 1 bit BPDU / CDP indicator */</span>
        !          1090: 01103     u_int16_t isl_index;      <span class="comment">/* port index */</span>
        !          1091: 01104     u_int16_t isl_reserved;   <span class="comment">/* used for FDDI and token ring */</span>
        !          1092: 01105     <span class="comment">/* ethernet frame and 4 byte isl crc */</span>
        !          1093: 01106 };
        !          1094: 01107 
        !          1095: 01108 <span class="preprocessor">#ifndef IPPROTO_OSPF</span>
        !          1096: 01109 <span class="preprocessor"></span><span class="preprocessor">#define IPPROTO_OSPF    89  </span><span class="comment">/* not everyone's got this */</span>
        !          1097: 01110 <span class="preprocessor">#endif</span>
        !          1098: 01111 <span class="preprocessor"></span><span class="preprocessor">#define IPPROTO_OSPF_LSA    890     </span><span class="comment">/* made this up.  Hope it's unused */</span>
        !          1099: 01112 <span class="preprocessor">#define LIBNET_MODX         4102    </span><span class="comment">/* used in LSA checksum */</span>
        !          1100: 01113 
        !          1101: 01114 <span class="comment">/*</span>
        !          1102: 01115 <span class="comment"> *  Options used in multiple OSPF packets</span>
        !          1103: 01116 <span class="comment"> *  More info can be found in section A.2 of RFC 2328.</span>
        !          1104: 01117 <span class="comment"> */</span>
        !          1105: 01118 <span class="preprocessor">#define LIBNET_OPT_EBIT  0x02 </span><span class="comment">/* describes the way AS-external-LSAs are flooded */</span>
        !          1106: 01119 <span class="preprocessor">#define LIBNET_OPT_MCBIT 0x04 </span><span class="comment">/* whether or not IP multicast dgrams are fwdd */</span>
        !          1107: 01120 <span class="preprocessor">#define LIBNET_OPT_NPBIT 0x08 </span><span class="comment">/* describes handling of type-7 LSAs */</span>
        !          1108: 01121 <span class="preprocessor">#define LIBNET_OPT_EABIT 0x10 </span><span class="comment">/* rtr's willingness to send/recv EA-LSAs */</span>
        !          1109: 01122 <span class="preprocessor">#define LIBNET_OPT_DCBIT 0x20 </span><span class="comment">/* describes handling of demand circuits */</span>
        !          1110: 01123 
        !          1111: 01124 
        !          1112: 01125 <span class="comment">/*</span>
        !          1113: 01126 <span class="comment"> *  MPLS header</span>
        !          1114: 01127 <span class="comment"> *  Multi-Protocol Label Switching</span>
        !          1115: 01128 <span class="comment"> *  Static header size: 4 bytes</span>
        !          1116: 01129 <span class="comment"> */</span>
        !          1117: 01130 <span class="keyword">struct </span>libnet_mpls_hdr
        !          1118: 01131 {
        !          1119: 01132     u_int32_t mpls_les;          <span class="comment">/* 20 bits label, 3 bits exp, 1 bit bos, ttl */</span>
        !          1120: 01133 <span class="preprocessor">#define LIBNET_MPLS_BOS_ON    1</span>
        !          1121: 01134 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_MPLS_BOS_OFF   0</span>
        !          1122: 01135 <span class="preprocessor"></span>};
        !          1123: 01136 
        !          1124: 01137 <span class="comment">/*</span>
        !          1125: 01138 <span class="comment"> *  NTP header</span>
        !          1126: 01139 <span class="comment"> *  Network Time Protocol</span>
        !          1127: 01140 <span class="comment"> *  Static header size: 48 bytes</span>
        !          1128: 01141 <span class="comment"> */</span>
        !          1129: 01142 <span class="keyword">struct </span>libnet_ntp_hdr_l_fp  <span class="comment">/* int32_t floating point (64-bit) */</span>
        !          1130: 01143 {
        !          1131: 01144     u_int32_t integer;         <span class="comment">/* integer */</span>
        !          1132: 01145     u_int32_t fraction;        <span class="comment">/* fraction */</span>
        !          1133: 01146 };
        !          1134: 01147 
        !          1135: 01148 <span class="keyword">struct </span>libnet_ntp_hdr_s_fp  <span class="comment">/* int16_t floating point (32-bit) */</span>
        !          1136: 01149 {
        !          1137: 01150     u_int16_t integer;        <span class="comment">/* integer */</span>
        !          1138: 01151     u_int16_t fraction;       <span class="comment">/* fraction */</span>
        !          1139: 01152 };
        !          1140: 01153 
        !          1141: 01154 
        !          1142: 01155 <span class="keyword">struct </span>libnet_ntp_hdr
        !          1143: 01156 {
        !          1144: 01157     u_int8_t ntp_li_vn_mode;              <span class="comment">/* leap indicator, version, mode */</span>
        !          1145: 01158 <span class="preprocessor">#define LIBNET_NTP_LI_NW    0x0         </span><span class="comment">/* no warning */</span>
        !          1146: 01159 <span class="preprocessor">#define LIBNET_NTP_LI_AS    0x1         </span><span class="comment">/* last minute has 61 seconds */</span>
        !          1147: 01160 <span class="preprocessor">#define LIBNET_NTP_LI_DS    0x2         </span><span class="comment">/* last minute has 59 seconds */</span>
        !          1148: 01161 <span class="preprocessor">#define LIBNET_NTP_LI_AC    0x3         </span><span class="comment">/* alarm condition */</span>
        !          1149: 01162 
        !          1150: 01163 <span class="preprocessor">#define LIBNET_NTP_VN_2     0x2         </span><span class="comment">/* version 2 */</span>
        !          1151: 01164 <span class="preprocessor">#define LIBNET_NTP_VN_3     0x3         </span><span class="comment">/* version 3 */</span>
        !          1152: 01165 <span class="preprocessor">#define LIBNET_NTP_VN_4     0x4         </span><span class="comment">/* version 4 */</span>
        !          1153: 01166 
        !          1154: 01167 <span class="preprocessor">#define LIBNET_NTP_MODE_R   0x0         </span><span class="comment">/* reserved */</span>
        !          1155: 01168 <span class="preprocessor">#define LIBNET_NTP_MODE_A   0x1         </span><span class="comment">/* symmetric active */</span>
        !          1156: 01169 <span class="preprocessor">#define LIBNET_NTP_MODE_P   0x2         </span><span class="comment">/* symmetric passive */</span>
        !          1157: 01170 <span class="preprocessor">#define LIBNET_NTP_MODE_C   0x3         </span><span class="comment">/* client */</span>
        !          1158: 01171 <span class="preprocessor">#define LIBNET_NTP_MODE_S   0x4         </span><span class="comment">/* server */</span>
        !          1159: 01172 <span class="preprocessor">#define LIBNET_NTP_MODE_B   0x5         </span><span class="comment">/* broadcast */</span>
        !          1160: 01173 <span class="preprocessor">#define LIBNET_NTP_MODE_RC  0x6         </span><span class="comment">/* reserved for NTP control message */</span>
        !          1161: 01174 <span class="preprocessor">#define LIBNET_NTP_MODE_RP  0x7         </span><span class="comment">/* reserved for private use */</span>
        !          1162: 01175     u_int8_t ntp_stratum;                 <span class="comment">/* stratum */</span>
        !          1163: 01176 <span class="preprocessor">#define LIBNET_NTP_STRATUM_UNAVAIL  0x0 </span><span class="comment">/* unspecified or unavailable */</span>
        !          1164: 01177 <span class="preprocessor">#define LIBNET_NTP_STRATUM_PRIMARY  0x1 </span><span class="comment">/* primary reference (radio clock) */</span>
        !          1165: 01178                                         <span class="comment">/* 2 - 15 is secondary */</span>
        !          1166: 01179                                         <span class="comment">/* 16 - 255 is reserved */</span>
        !          1167: 01180     u_int8_t ntp_poll;                    <span class="comment">/* poll interval (should be 4 - 12) */</span>
        !          1168: 01181     u_int8_t ntp_precision;               <span class="comment">/* local clock precision */</span>
        !          1169: 01182     <span class="keyword">struct </span>libnet_ntp_hdr_s_fp ntp_delay;       <span class="comment">/* roundtrip delay */</span>
        !          1170: 01183     <span class="keyword">struct </span>libnet_ntp_hdr_s_fp ntp_dispersion;  <span class="comment">/* nominal error */</span>
        !          1171: 01184     u_int32_t ntp_reference_id;                <span class="comment">/* reference source id */</span>
        !          1172: 01185 <span class="preprocessor">#define LIBNET_NTP_REF_LOCAL    0x4c4f434c  </span><span class="comment">/* uncalibrated local clock */</span>
        !          1173: 01186 <span class="preprocessor">#define LIBNET_NTP_REF_PPS      0x50505300  </span><span class="comment">/* atomic / pulse-per-second clock */</span>
        !          1174: 01187 <span class="preprocessor">#define LIBNET_NTP_REF_ACTS     0x41435453  </span><span class="comment">/* NIST dialup modem */</span>
        !          1175: 01188 <span class="preprocessor">#define LIBNET_NTP_REF_USNO     0x55534e4f  </span><span class="comment">/* USNO modem service */</span>
        !          1176: 01189 <span class="preprocessor">#define LIBNET_NTP_REF_PTB      0x50544200  </span><span class="comment">/* PTB (German) modem service */</span> 
        !          1177: 01190 <span class="preprocessor">#define LIBNET_NTP_REF_TDF      0x54444600  </span><span class="comment">/* Allouis (French) radio */</span>
        !          1178: 01191 <span class="preprocessor">#define LIBNET_NTP_REF_DCF      0x44434600  </span><span class="comment">/* Mainflingen (German) radio */</span>
        !          1179: 01192 <span class="preprocessor">#define LIBNET_NTP_REF_MSF      0x4d534600  </span><span class="comment">/* Rugby (UK) radio */</span>
        !          1180: 01193 <span class="preprocessor">#define LIBNET_NTP_REF_WWV      0x57575600  </span><span class="comment">/* Ft Collins (US) radio */</span>
        !          1181: 01194 <span class="preprocessor">#define LIBNET_NTP_REF_WWVB     0x57575642  </span><span class="comment">/* Boulder (US) radio */</span>
        !          1182: 01195 <span class="preprocessor">#define LIBNET_NTP_REF_WWVH     0x57575648  </span><span class="comment">/* Kaui Hawaii (US) radio */</span>
        !          1183: 01196 <span class="preprocessor">#define LIBNET_NTP_REF_CHU      0x43485500  </span><span class="comment">/* Ottaha (Canada) radio */</span>
        !          1184: 01197 <span class="preprocessor">#define LIBNET_NTP_REF_LORC     0x4c4f5243  </span><span class="comment">/* LORAN-C radionavigation */</span>
        !          1185: 01198 <span class="preprocessor">#define LIBNET_NTP_REF_OMEG     0x4f4d4547  </span><span class="comment">/* OMEGA radionavigation */</span>
        !          1186: 01199 <span class="preprocessor">#define LIBNET_NTP_REF_GPS      0x47505300  </span><span class="comment">/* global positioning system */</span>
        !          1187: 01200 <span class="preprocessor">#define LIBNET_NTP_REF_GOES     0x474f4553  </span><span class="comment">/* geostationary orbit env satellite */</span>
        !          1188: 01201     <span class="keyword">struct </span>libnet_ntp_hdr_l_fp ntp_ref_ts;  <span class="comment">/* reference timestamp */</span> 
        !          1189: 01202     <span class="keyword">struct </span>libnet_ntp_hdr_l_fp ntp_orig_ts; <span class="comment">/* originate timestamp */</span>
        !          1190: 01203     <span class="keyword">struct </span>libnet_ntp_hdr_l_fp ntp_rec_ts;  <span class="comment">/* receive timestamp */</span>
        !          1191: 01204     <span class="keyword">struct </span>libnet_ntp_hdr_l_fp ntp_xmt_ts;  <span class="comment">/* transmit timestamp */</span>
        !          1192: 01205 };
        !          1193: 01206 
        !          1194: 01207 
        !          1195: 01208 <span class="comment">/*</span>
        !          1196: 01209 <span class="comment"> *  OSPFv2 header</span>
        !          1197: 01210 <span class="comment"> *  Open Shortest Path First</span>
        !          1198: 01211 <span class="comment"> *  Static header size: 16 bytes</span>
        !          1199: 01212 <span class="comment"> */</span>
        !          1200: 01213 <span class="keyword">struct </span>libnet_ospf_hdr
        !          1201: 01214 {
        !          1202: 01215     u_int8_t ospf_v;          <span class="comment">/* version */</span>
        !          1203: 01216 <span class="preprocessor">#define OSPFVERSION         2</span>
        !          1204: 01217 <span class="preprocessor"></span>    u_int8_t ospf_type;       <span class="comment">/* type */</span>
        !          1205: 01218 <span class="preprocessor">#define  LIBNET_OSPF_UMD    0   </span><span class="comment">/* UMd monitoring packet */</span>
        !          1206: 01219 <span class="preprocessor">#define  LIBNET_OSPF_HELLO  1   </span><span class="comment">/* HELLO packet */</span>
        !          1207: 01220 <span class="preprocessor">#define  LIBNET_OSPF_DBD    2   </span><span class="comment">/* dataBase description packet */</span>
        !          1208: 01221 <span class="preprocessor">#define  LIBNET_OSPF_LSR    3   </span><span class="comment">/* link state request packet */</span>
        !          1209: 01222 <span class="preprocessor">#define  LIBNET_OSPF_LSU    4   </span><span class="comment">/* link state Update Packet */</span>
        !          1210: 01223 <span class="preprocessor">#define  LIBNET_OSPF_LSA    5   </span><span class="comment">/* link state acknowledgement packet */</span>
        !          1211: 01224     u_int16_t   ospf_len;     <span class="comment">/* length */</span>
        !          1212: 01225     <span class="keyword">struct </span>in_addr ospf_rtr_id; <span class="comment">/* source router ID */</span>
        !          1213: 01226     <span class="keyword">struct </span>in_addr ospf_area_id;<span class="comment">/* roam ID */</span>
        !          1214: 01227     u_int16_t ospf_sum;         <span class="comment">/* checksum */</span>
        !          1215: 01228     u_int16_t ospf_auth_type;     <span class="comment">/* authentication type */</span>
        !          1216: 01229 <span class="preprocessor">#define LIBNET_OSPF_AUTH_NULL   0   </span><span class="comment">/* null password */</span>
        !          1217: 01230 <span class="preprocessor">#define LIBNET_OSPF_AUTH_SIMPLE 1   </span><span class="comment">/* simple, plaintext, 8 int8_t password */</span>
        !          1218: 01231 <span class="preprocessor">#define LIBNET_OSPF_AUTH_MD5    2   </span><span class="comment">/* MD5 */</span>
        !          1219: 01232 };
        !          1220: 01233 
        !          1221: 01234 
        !          1222: 01235 <span class="comment">/*</span>
        !          1223: 01236 <span class="comment"> *  OSPF authentication header</span>
        !          1224: 01237 <span class="comment"> *  Open Shortest Path First</span>
        !          1225: 01238 <span class="comment"> *  Static header size: 8 bytes</span>
        !          1226: 01239 <span class="comment"> */</span>
        !          1227: 01240 <span class="keyword">struct </span>libnet_auth_hdr
        !          1228: 01241 {
        !          1229: 01242     u_int16_t ospf_auth_null; <span class="comment">/* NULL */</span>
        !          1230: 01243     u_int8_t ospf_auth_keyid; <span class="comment">/* authentication key ID */</span>
        !          1231: 01244     u_int8_t ospf_auth_len;   <span class="comment">/* auth data length */</span>
        !          1232: 01245     u_int ospf_auth_seq;    <span class="comment">/* cryptographic sequence number */</span>
        !          1233: 01246 };
        !          1234: 01247 
        !          1235: 01248 
        !          1236: 01249 <span class="comment">/*</span>
        !          1237: 01250 <span class="comment"> *  OSPF hello header</span>
        !          1238: 01251 <span class="comment"> *  Open Shortest Path First</span>
        !          1239: 01252 <span class="comment"> *  Static header size: 28 bytes</span>
        !          1240: 01253 <span class="comment"> */</span>
        !          1241: 01254 <span class="keyword">struct </span>libnet_ospf_hello_hdr
        !          1242: 01255 {
        !          1243: 01256     <span class="keyword">struct </span>in_addr hello_nmask; <span class="comment">/* netmask associated with the interface */</span>
        !          1244: 01257     u_int16_t hello_intrvl;       <span class="comment">/* num of seconds between routers last packet */</span>
        !          1245: 01258     u_int8_t hello_opts;          <span class="comment">/* Options for HELLO packets (look above) */</span>
        !          1246: 01259     u_int8_t hello_rtr_pri;       <span class="comment">/* router's priority (if 0, can't be backup) */</span>
        !          1247: 01260     u_int hello_dead_intvl;     <span class="comment">/* # of secs a router is silent till deemed down */</span>
        !          1248: 01261     <span class="keyword">struct </span>in_addr hello_des_rtr;   <span class="comment">/* Designated router on the network */</span>
        !          1249: 01262     <span class="keyword">struct </span>in_addr hello_bkup_rtr;  <span class="comment">/* Backup router */</span>
        !          1250: 01263     <span class="keyword">struct </span>in_addr hello_nbr;       <span class="comment">/* neighbor router, memcpy more as needed */</span>
        !          1251: 01264 };
        !          1252: 01265 
        !          1253: 01266 
        !          1254: 01267 <span class="comment">/*</span>
        !          1255: 01268 <span class="comment"> *  Database Description header.</span>
        !          1256: 01269 <span class="comment"> */</span>
        !          1257: 01270 <span class="keyword">struct </span>libnet_dbd_hdr
        !          1258: 01271 {
        !          1259: 01272     u_int16_t dbd_mtu_len;    <span class="comment">/* max length of IP dgram that this 'if' can use */</span>
        !          1260: 01273     u_int8_t dbd_opts;        <span class="comment">/* DBD packet options (from above) */</span>
        !          1261: 01274     u_int8_t dbd_type;        <span class="comment">/* type of exchange occurring */</span>
        !          1262: 01275 <span class="preprocessor">#define LIBNET_DBD_IBI      0x01    </span><span class="comment">/* init */</span>
        !          1263: 01276 <span class="preprocessor">#define LIBNET_DBD_MBIT     0x02    </span><span class="comment">/* more DBD packets are to come */</span>
        !          1264: 01277 <span class="preprocessor">#define LIBNET_DBD_MSBIT    0x04    </span><span class="comment">/* If 1, sender is the master in the exchange */</span>
        !          1265: 01278     u_int  dbd_seq;         <span class="comment">/* DBD sequence number */</span>
        !          1266: 01279 };
        !          1267: 01280 
        !          1268: 01281 
        !          1269: 01282 <span class="comment">/*</span>
        !          1270: 01283 <span class="comment"> *  used for the LS type field in all LS* headers</span>
        !          1271: 01284 <span class="comment"> */</span>
        !          1272: 01285 <span class="preprocessor">#define LIBNET_LS_TYPE_RTR      1   </span><span class="comment">/* router-LSA */</span>
        !          1273: 01286 <span class="preprocessor">#define LIBNET_LS_TYPE_NET      2   </span><span class="comment">/* network-LSA */</span>
        !          1274: 01287 <span class="preprocessor">#define LIBNET_LS_TYPE_IP       3   </span><span class="comment">/* summary-LSA (IP Network) */</span>
        !          1275: 01288 <span class="preprocessor">#define LIBNET_LS_TYPE_ASBR     4   </span><span class="comment">/* summary-LSA (ASBR) */</span>
        !          1276: 01289 <span class="preprocessor">#define LIBNET_LS_TYPE_ASEXT    5   </span><span class="comment">/* AS-external-LSA */</span>
        !          1277: 01290 
        !          1278: 01291 
        !          1279: 01292 <span class="comment">/*</span>
        !          1280: 01293 <span class="comment"> *  Link State Request header</span>
        !          1281: 01294 <span class="comment"> */</span>
        !          1282: 01295 <span class="keyword">struct </span>libnet_lsr_hdr
        !          1283: 01296 {
        !          1284: 01297     u_int lsr_type;             <span class="comment">/* type of LS being requested */</span>
        !          1285: 01298     u_int lsr_lsid;             <span class="comment">/* link state ID */</span>
        !          1286: 01299     <span class="keyword">struct </span>in_addr lsr_adrtr;   <span class="comment">/* advertising router (memcpy more as needed) */</span>
        !          1287: 01300 };
        !          1288: 01301 
        !          1289: 01302 
        !          1290: 01303 <span class="comment">/*</span>
        !          1291: 01304 <span class="comment"> *  Link State Update header</span>
        !          1292: 01305 <span class="comment"> */</span>
        !          1293: 01306 <span class="keyword">struct </span>libnet_lsu_hdr
        !          1294: 01307 {
        !          1295: 01308     u_int lsu_num;              <span class="comment">/* number of LSAs that will be broadcasted */</span>
        !          1296: 01309 };
        !          1297: 01310 
        !          1298: 01311 
        !          1299: 01312 <span class="comment">/*</span>
        !          1300: 01313 <span class="comment"> *  Link State Acknowledgement header.</span>
        !          1301: 01314 <span class="comment"> */</span>
        !          1302: 01315 <span class="keyword">struct </span>libnet_lsa_hdr
        !          1303: 01316 {
        !          1304: 01317     u_int16_t lsa_age;        <span class="comment">/* time in seconds since the LSA was originated */</span>
        !          1305: 01318     u_int8_t lsa_opts;        <span class="comment">/* look above for OPTS_* */</span>
        !          1306: 01319     u_int8_t lsa_type;        <span class="comment">/* look below for LS_TYPE_* */</span>
        !          1307: 01320     u_int lsa_id;           <span class="comment">/* link State ID */</span>
        !          1308: 01321     <span class="keyword">struct </span>in_addr lsa_adv; <span class="comment">/* router ID of Advertising router */</span>
        !          1309: 01322     u_int lsa_seq;          <span class="comment">/* LSA sequence number to detect old/bad ones */</span>
        !          1310: 01323     u_int16_t lsa_sum;      <span class="comment">/* "Fletcher Checksum" of all fields minus age */</span>
        !          1311: 01324     u_int16_t lsa_len;        <span class="comment">/* length in bytes including the 20 byte header */</span>
        !          1312: 01325 };
        !          1313: 01326 
        !          1314: 01327 
        !          1315: 01328 <span class="comment">/*</span>
        !          1316: 01329 <span class="comment"> *  Router LSA data format</span>
        !          1317: 01330 <span class="comment"> *</span>
        !          1318: 01331 <span class="comment"> *  Other stuff for TOS can be added for backward compatability, for this</span>
        !          1319: 01332 <span class="comment"> *  version, only OSPFv2 is being FULLY supported.</span>
        !          1320: 01333 <span class="comment"> */</span>
        !          1321: 01334 <span class="keyword">struct </span>libnet_rtr_lsa_hdr
        !          1322: 01335 {
        !          1323: 01336     u_int16_t rtr_flags;      <span class="comment">/* set to help describe packet */</span>
        !          1324: 01337 <span class="preprocessor">#define LIBNET_RTR_FLAGS_W  0x0100  </span><span class="comment">/* W bit */</span>
        !          1325: 01338 <span class="preprocessor">#define LIBNET_RTR_FLAGS_E  0x0200  </span><span class="comment">/* E bit */</span>
        !          1326: 01339 <span class="preprocessor">#define LIBNET_RTR_FLAGS_B  0x0400  </span><span class="comment">/* B bit */</span>
        !          1327: 01340     u_int16_t rtr_num;        <span class="comment">/* number of links within that packet */</span>
        !          1328: 01341     u_int rtr_link_id;      <span class="comment">/* describes link_data (look below) */</span>
        !          1329: 01342 <span class="preprocessor">#define LIBNET_LINK_ID_NBR_ID   1   </span><span class="comment">/* Neighbors router ID, also can be 4 */</span>
        !          1330: 01343 <span class="preprocessor">#define LIBNET_LINK_ID_IP_DES   2   </span><span class="comment">/* IP address of designated router */</span>
        !          1331: 01344 <span class="preprocessor">#define LIBNET_LINK_ID_SUB      3   </span><span class="comment">/* IP subnet number */</span>
        !          1332: 01345     u_int rtr_link_data;    <span class="comment">/* Depending on link_id, info is here */</span>
        !          1333: 01346     u_int8_t rtr_type;        <span class="comment">/* Description of router link */</span>
        !          1334: 01347 <span class="preprocessor">#define LIBNET_RTR_TYPE_PTP     1   </span><span class="comment">/* Point-To-Point */</span>
        !          1335: 01348 <span class="preprocessor">#define LIBNET_RTR_TYPE_TRANS   2   </span><span class="comment">/* Connection to a "transit network" */</span>
        !          1336: 01349 <span class="preprocessor">#define LIBNET_RTR_TYPE_STUB    3   </span><span class="comment">/* Connectin to a "stub network" */</span>
        !          1337: 01350 <span class="preprocessor">#define RTR_TYPE_VRTL   4   </span><span class="comment">/* connects to a "virtual link" */</span>
        !          1338: 01351     u_int8_t rtr_tos_num;     <span class="comment">/* number of different TOS metrics for this link */</span>
        !          1339: 01352     u_int16_t rtr_metric;     <span class="comment">/* the "cost" of using this link */</span>
        !          1340: 01353 };
        !          1341: 01354 
        !          1342: 01355 
        !          1343: 01356 <span class="comment">/*</span>
        !          1344: 01357 <span class="comment"> *  Network LSA data format.</span>
        !          1345: 01358 <span class="comment"> */</span>
        !          1346: 01359 <span class="keyword">struct </span>libnet_net_lsa_hdr
        !          1347: 01360 {
        !          1348: 01361     <span class="keyword">struct </span>in_addr net_nmask;   <span class="comment">/* Netmask for that network */</span>
        !          1349: 01362     u_int  net_rtr_id;          <span class="comment">/* ID of router attached to that network */</span>
        !          1350: 01363 };
        !          1351: 01364  
        !          1352: 01365  
        !          1353: 01366 <span class="comment">/*</span>
        !          1354: 01367 <span class="comment"> *  Summary LSA data format.</span>
        !          1355: 01368 <span class="comment"> */</span>
        !          1356: 01369 <span class="keyword">struct </span>libnet_sum_lsa_hdr
        !          1357: 01370 {
        !          1358: 01371     <span class="keyword">struct </span>in_addr sum_nmask;   <span class="comment">/* Netmask of destination IP address */</span>
        !          1359: 01372     u_int  sum_metric;          <span class="comment">/* Same as in rtr_lsa (&amp;0xfff to use last 24bit */</span>
        !          1360: 01373     u_int  sum_tos_metric;      <span class="comment">/* first 8bits are TOS, 24bits are TOS Metric */</span>
        !          1361: 01374 };
        !          1362: 01375  
        !          1363: 01376  
        !          1364: 01377 <span class="comment">/*</span>
        !          1365: 01378 <span class="comment"> *  AS External LSA data format.</span>
        !          1366: 01379 <span class="comment"> *  &amp; 0xfff logic operator for as_metric to get last 24bits.</span>
        !          1367: 01380 <span class="comment"> */</span>
        !          1368: 01381 <span class="keyword">struct </span>libnet_as_lsa_hdr
        !          1369: 01382 {
        !          1370: 01383     <span class="keyword">struct </span>in_addr as_nmask;    <span class="comment">/* Netmask for advertised destination */</span>
        !          1371: 01384     u_int  as_metric;           <span class="comment">/* May have to set E bit in first 8bits */</span>
        !          1372: 01385 <span class="preprocessor">#define LIBNET_AS_E_BIT_ON 0x80000000  </span><span class="comment">/* as_metric */</span>
        !          1373: 01386     <span class="keyword">struct </span>in_addr as_fwd_addr; <span class="comment">/* Forwarding address */</span>
        !          1374: 01387     u_int  as_rte_tag;          <span class="comment">/* External route tag */</span>
        !          1375: 01388 };
        !          1376: 01389 
        !          1377: 01390 
        !          1378: 01391 <span class="comment">/*</span>
        !          1379: 01392 <span class="comment"> *  Base RIP header</span>
        !          1380: 01393 <span class="comment"> *  Routing Information Protocol</span>
        !          1381: 01394 <span class="comment"> *  Base header size: 24 bytes</span>
        !          1382: 01395 <span class="comment"> */</span>
        !          1383: 01396 <span class="keyword">struct </span>libnet_rip_hdr
        !          1384: 01397 {
        !          1385: 01398     u_int8_t rip_cmd;         <span class="comment">/* RIP command */</span>
        !          1386: 01399 <span class="preprocessor">#define RIPCMD_REQUEST   1  </span><span class="comment">/* want info */</span>
        !          1387: 01400 <span class="preprocessor">#define RIPCMD_RESPONSE  2  </span><span class="comment">/* responding to request */</span>
        !          1388: 01401 <span class="preprocessor">#define RIPCMD_TRACEON   3  </span><span class="comment">/* turn tracing on */</span>
        !          1389: 01402 <span class="preprocessor">#define RIPCMD_TRACEOFF  4  </span><span class="comment">/* turn it off */</span>
        !          1390: 01403 <span class="preprocessor">#define RIPCMD_POLL      5  </span><span class="comment">/* like request, but anyone answers */</span>
        !          1391: 01404 <span class="preprocessor">#define RIPCMD_POLLENTRY 6  </span><span class="comment">/* like poll, but for entire entry */</span>
        !          1392: 01405 <span class="preprocessor">#define RIPCMD_MAX       7  </span><span class="comment">/* ? command */</span>
        !          1393: 01406     u_int8_t rip_ver;         <span class="comment">/* RIP version */</span>
        !          1394: 01407 <span class="preprocessor">#define RIPVER_0         0</span>
        !          1395: 01408 <span class="preprocessor"></span><span class="preprocessor">#define RIPVER_1         1</span>
        !          1396: 01409 <span class="preprocessor"></span><span class="preprocessor">#define RIPVER_2         2</span>
        !          1397: 01410 <span class="preprocessor"></span>    u_int16_t rip_rd;         <span class="comment">/* Zero (v1) or Routing Domain (v2) */</span>
        !          1398: 01411     u_int16_t rip_af;         <span class="comment">/* Address family */</span>
        !          1399: 01412     u_int16_t rip_rt;         <span class="comment">/* Zero (v1) or Route Tag (v2) */</span>
        !          1400: 01413     u_int32_t rip_addr;        <span class="comment">/* IP address */</span>
        !          1401: 01414     u_int32_t rip_mask;        <span class="comment">/* Zero (v1) or Subnet Mask (v2) */</span>
        !          1402: 01415     u_int32_t rip_next_hop;    <span class="comment">/* Zero (v1) or Next hop IP address (v2) */</span>
        !          1403: 01416     u_int32_t rip_metric;      <span class="comment">/* Metric */</span>
        !          1404: 01417 };
        !          1405: 01418 
        !          1406: 01419 <span class="comment">/*</span>
        !          1407: 01420 <span class="comment"> *  RPC headers</span>
        !          1408: 01421 <span class="comment"> *  Remote Procedure Call</span>
        !          1409: 01422 <span class="comment"> */</span>
        !          1410: 01423 <span class="preprocessor">#define LIBNET_RPC_CALL  0</span>
        !          1411: 01424 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_RPC_REPLY 1</span>
        !          1412: 01425 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_RPC_VERS  2</span>
        !          1413: 01426 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_RPC_LAST_FRAG 0x80000000</span>
        !          1414: 01427 <span class="preprocessor"></span>
        !          1415: 01428 <span class="comment">/*</span>
        !          1416: 01429 <span class="comment"> *  Portmap defines</span>
        !          1417: 01430 <span class="comment"> */</span>
        !          1418: 01431 <span class="preprocessor">#define LIBNET_PMAP_PROGRAM          100000</span>
        !          1419: 01432 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_NULL        0</span>
        !          1420: 01433 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_SET         1</span>
        !          1421: 01434 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_UNSET       2</span>
        !          1422: 01435 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_GETADDR     3</span>
        !          1423: 01436 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_DUMP        4</span>
        !          1424: 01437 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_CALLIT      5</span>
        !          1425: 01438 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_BCAST       5 </span><span class="comment">/* Not a typo */</span>
        !          1426: 01439 <span class="preprocessor">#define LIBNET_PMAP_PROC_GETTIME     6</span>
        !          1427: 01440 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_UADDR2TADDR 7</span>
        !          1428: 01441 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_TADDR2UADDR 8</span>
        !          1429: 01442 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_GETVERSADDR 9</span>
        !          1430: 01443 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_INDIRECT    10</span>
        !          1431: 01444 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_GETADDRLIST 11</span>
        !          1432: 01445 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_GETSTAT     12</span>
        !          1433: 01446 <span class="preprocessor"></span>
        !          1434: 01447 <span class="comment">/* There will be more to add... */</span>
        !          1435: 01448 
        !          1436: 01449 <span class="keyword">struct </span>libnet_rpc_opaque_auth
        !          1437: 01450 {
        !          1438: 01451     u_int32_t rpc_auth_flavor;
        !          1439: 01452     u_int32_t rpc_auth_length;
        !          1440: 01453 <span class="comment">//    u_int8_t *rpc_auth_data;</span>
        !          1441: 01454 };
        !          1442: 01455 
        !          1443: 01456 <span class="keyword">struct </span>libnet_rpc_call
        !          1444: 01457 {
        !          1445: 01458     u_int32_t rpc_rpcvers;   <span class="comment">/* RPC version - must be 2 */</span>
        !          1446: 01459     u_int32_t rpc_prognum;   <span class="comment">/* Program Number */</span>
        !          1447: 01460     u_int32_t rpc_vers;      <span class="comment">/* Program Version */</span>
        !          1448: 01461     u_int32_t rpc_procedure; <span class="comment">/* RPC procedure */</span>
        !          1449: 01462     <span class="keyword">struct </span>libnet_rpc_opaque_auth rpc_credentials;
        !          1450: 01463     <span class="keyword">struct </span>libnet_rpc_opaque_auth rpc_verifier;
        !          1451: 01464 };
        !          1452: 01465 
        !          1453: 01466 <span class="keyword">struct </span>libnet_rpc_call_hdr
        !          1454: 01467 {
        !          1455: 01468     u_int32_t rpc_xid;  <span class="comment">/* xid (transaction identifier) */</span>
        !          1456: 01469     u_int32_t rpc_type;
        !          1457: 01470     <span class="keyword">struct </span>libnet_rpc_call  rpc_call;
        !          1458: 01471 };
        !          1459: 01472 
        !          1460: 01473 <span class="keyword">struct </span>libnet_rpc_call_tcp_hdr
        !          1461: 01474 {
        !          1462: 01475     u_int32_t rpc_record_marking; <span class="comment">/* used with byte stream protocols */</span>
        !          1463: 01476     <span class="keyword">struct </span>libnet_rpc_call_hdr rpc_common;
        !          1464: 01477 };
        !          1465: 01478 
        !          1466: 01479 <span class="comment">/*</span>
        !          1467: 01480 <span class="comment"> *  STP configuration header</span>
        !          1468: 01481 <span class="comment"> *  Spanning Tree Protocol</span>
        !          1469: 01482 <span class="comment"> *  Static header size: 35 bytes</span>
        !          1470: 01483 <span class="comment"> */</span>
        !          1471: 01484 <span class="keyword">struct </span>libnet_stp_conf_hdr
        !          1472: 01485 {
        !          1473: 01486     u_int16_t stp_id;         <span class="comment">/* protocol id */</span>
        !          1474: 01487     u_int8_t stp_version;     <span class="comment">/* protocol version */</span>
        !          1475: 01488     u_int8_t stp_bpdu_type;   <span class="comment">/* bridge protocol data unit type */</span>
        !          1476: 01489     u_int8_t stp_flags;       <span class="comment">/* control flags */</span>
        !          1477: 01490     u_int8_t stp_rootid[8];   <span class="comment">/* root id */</span>
        !          1478: 01491     u_int32_t stp_rootpc;      <span class="comment">/* root path cost */</span>
        !          1479: 01492     u_int8_t stp_bridgeid[8]; <span class="comment">/* bridge id */</span>
        !          1480: 01493     u_int16_t stp_portid;     <span class="comment">/* port id */</span>
        !          1481: 01494     u_int16_t stp_mage;       <span class="comment">/* message age */</span>
        !          1482: 01495     u_int16_t stp_maxage;     <span class="comment">/* max age */</span>
        !          1483: 01496     u_int16_t stp_hellot;     <span class="comment">/* hello time */</span>
        !          1484: 01497     u_int16_t stp_fdelay;     <span class="comment">/* forward delay */</span>
        !          1485: 01498 };
        !          1486: 01499 
        !          1487: 01500 
        !          1488: 01501 <span class="comment">/*</span>
        !          1489: 01502 <span class="comment"> *  STP topology change notification header</span>
        !          1490: 01503 <span class="comment"> *  Spanning Tree Protocol</span>
        !          1491: 01504 <span class="comment"> *  Static header size: 4 bytes</span>
        !          1492: 01505 <span class="comment"> */</span>
        !          1493: 01506 <span class="keyword">struct </span>libnet_stp_tcn_hdr
        !          1494: 01507 {
        !          1495: 01508     u_int16_t stp_id;         <span class="comment">/* protocol id */</span>
        !          1496: 01509     u_int8_t stp_version;     <span class="comment">/* protocol version */</span>
        !          1497: 01510     u_int8_t stp_bpdu_type;   <span class="comment">/* bridge protocol data unit type */</span>
        !          1498: 01511 };
        !          1499: 01512 
        !          1500: 01513 
        !          1501: 01514 <span class="comment">/*</span>
        !          1502: 01515 <span class="comment"> *  TCP header</span>
        !          1503: 01516 <span class="comment"> *  Transmission Control Protocol</span>
        !          1504: 01517 <span class="comment"> *  Static header size: 20 bytes</span>
        !          1505: 01518 <span class="comment"> */</span>
        !          1506: 01519 <span class="keyword">struct </span>libnet_tcp_hdr
        !          1507: 01520 {
        !          1508: 01521     u_int16_t th_sport;       <span class="comment">/* source port */</span>
        !          1509: 01522     u_int16_t th_dport;       <span class="comment">/* destination port */</span>
        !          1510: 01523     u_int32_t th_seq;          <span class="comment">/* sequence number */</span>
        !          1511: 01524     u_int32_t th_ack;          <span class="comment">/* acknowledgement number */</span>
        !          1512: 01525 <span class="preprocessor">#if (LIBNET_LIL_ENDIAN)</span>
        !          1513: 01526 <span class="preprocessor"></span>    u_int8_t th_x2:4,         <span class="comment">/* (unused) */</span>
        !          1514: 01527            th_off:4;        <span class="comment">/* data offset */</span>
        !          1515: 01528 <span class="preprocessor">#endif</span>
        !          1516: 01529 <span class="preprocessor"></span><span class="preprocessor">#if (LIBNET_BIG_ENDIAN)</span>
        !          1517: 01530 <span class="preprocessor"></span>    u_int8_t th_off:4,        <span class="comment">/* data offset */</span>
        !          1518: 01531            th_x2:4;         <span class="comment">/* (unused) */</span>
        !          1519: 01532 <span class="preprocessor">#endif</span>
        !          1520: 01533 <span class="preprocessor"></span>    u_int8_t  th_flags;       <span class="comment">/* control flags */</span>
        !          1521: 01534 <span class="preprocessor">#ifndef TH_FIN</span>
        !          1522: 01535 <span class="preprocessor"></span><span class="preprocessor">#define TH_FIN    0x01      </span><span class="comment">/* finished send data */</span>
        !          1523: 01536 <span class="preprocessor">#endif</span>
        !          1524: 01537 <span class="preprocessor"></span><span class="preprocessor">#ifndef TH_SYN</span>
        !          1525: 01538 <span class="preprocessor"></span><span class="preprocessor">#define TH_SYN    0x02      </span><span class="comment">/* synchronize sequence numbers */</span>
        !          1526: 01539 <span class="preprocessor">#endif</span>
        !          1527: 01540 <span class="preprocessor"></span><span class="preprocessor">#ifndef TH_RST</span>
        !          1528: 01541 <span class="preprocessor"></span><span class="preprocessor">#define TH_RST    0x04      </span><span class="comment">/* reset the connection */</span>
        !          1529: 01542 <span class="preprocessor">#endif</span>
        !          1530: 01543 <span class="preprocessor"></span><span class="preprocessor">#ifndef TH_PUSH</span>
        !          1531: 01544 <span class="preprocessor"></span><span class="preprocessor">#define TH_PUSH   0x08      </span><span class="comment">/* push data to the app layer */</span>
        !          1532: 01545 <span class="preprocessor">#endif</span>
        !          1533: 01546 <span class="preprocessor"></span><span class="preprocessor">#ifndef TH_ACK</span>
        !          1534: 01547 <span class="preprocessor"></span><span class="preprocessor">#define TH_ACK    0x10      </span><span class="comment">/* acknowledge */</span>
        !          1535: 01548 <span class="preprocessor">#endif</span>
        !          1536: 01549 <span class="preprocessor"></span><span class="preprocessor">#ifndef TH_URG</span>
        !          1537: 01550 <span class="preprocessor"></span><span class="preprocessor">#define TH_URG    0x20      </span><span class="comment">/* urgent! */</span>
        !          1538: 01551 <span class="preprocessor">#endif</span>
        !          1539: 01552 <span class="preprocessor"></span><span class="preprocessor">#ifndef TH_ECE</span>
        !          1540: 01553 <span class="preprocessor"></span><span class="preprocessor">#define TH_ECE    0x40</span>
        !          1541: 01554 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !          1542: 01555 <span class="preprocessor"></span><span class="preprocessor">#ifndef TH_CWR   </span>
        !          1543: 01556 <span class="preprocessor"></span><span class="preprocessor">#define TH_CWR    0x80</span>
        !          1544: 01557 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
        !          1545: 01558 <span class="preprocessor"></span>    u_int16_t th_win;         <span class="comment">/* window */</span>
        !          1546: 01559     u_int16_t th_sum;         <span class="comment">/* checksum */</span>
        !          1547: 01560     u_int16_t th_urp;         <span class="comment">/* urgent pointer */</span>
        !          1548: 01561 };
        !          1549: 01562 
        !          1550: 01563 <span class="comment">/*</span>
        !          1551: 01564 <span class="comment"> *  Token Ring Header</span>
        !          1552: 01565 <span class="comment"> */</span>
        !          1553: 01566 <span class="keyword">struct </span>libnet_token_ring_hdr
        !          1554: 01567 {
        !          1555: 01568     u_int8_t  token_ring_access_control;
        !          1556: 01569 <span class="preprocessor">#define LIBNET_TOKEN_RING_FRAME  0x10</span>
        !          1557: 01570 <span class="preprocessor"></span>    u_int8_t  token_ring_frame_control;
        !          1558: 01571 <span class="preprocessor">#define LIBNET_TOKEN_RING_LLC_FRAME  0x40</span>
        !          1559: 01572 <span class="preprocessor"></span>    u_int8_t  token_ring_dhost[TOKEN_RING_ADDR_LEN];
        !          1560: 01573     u_int8_t  token_ring_shost[TOKEN_RING_ADDR_LEN];
        !          1561: 01574     u_int8_t  token_ring_llc_dsap;
        !          1562: 01575     u_int8_t  token_ring_llc_ssap;
        !          1563: 01576     u_int8_t  token_ring_llc_control_field;
        !          1564: 01577     u_int8_t  token_ring_llc_org_code[LIBNET_ORG_CODE_SIZE];
        !          1565: 01578     u_int16_t token_ring_type;
        !          1566: 01579 <span class="preprocessor">#define TOKEN_RING_TYPE_IP            0x0800  </span><span class="comment">/* IP protocol */</span>
        !          1567: 01580 <span class="preprocessor">#define TOKEN_RING_TYPE_ARP           0x0806  </span><span class="comment">/* addr. resolution protocol */</span>
        !          1568: 01581 <span class="preprocessor">#define TOKEN_RING_TYPE_REVARP        0x8035  </span><span class="comment">/* reverse addr. resolution protocol */</span>
        !          1569: 01582 };
        !          1570: 01583 
        !          1571: 01584 <span class="keyword">struct </span>libnet_token_ring_addr
        !          1572: 01585 {
        !          1573: 01586     u_int8_t  token_ring_addr_octet[6];        <span class="comment">/* Token Ring address */</span>
        !          1574: 01587 };
        !          1575: 01588 
        !          1576: 01589 <span class="comment">/*</span>
        !          1577: 01590 <span class="comment"> *  UDP header</span>
        !          1578: 01591 <span class="comment"> *  User Data Protocol</span>
        !          1579: 01592 <span class="comment"> *  Static header size: 8 bytes</span>
        !          1580: 01593 <span class="comment"> */</span>
        !          1581: 01594 <span class="keyword">struct </span>libnet_udp_hdr
        !          1582: 01595 {
        !          1583: 01596     u_int16_t uh_sport;       <span class="comment">/* soure port */</span>
        !          1584: 01597     u_int16_t uh_dport;       <span class="comment">/* destination port */</span>
        !          1585: 01598     u_int16_t uh_ulen;        <span class="comment">/* length */</span>
        !          1586: 01599     u_int16_t uh_sum;         <span class="comment">/* checksum */</span>
        !          1587: 01600 };
        !          1588: 01601 
        !          1589: 01602 <span class="comment">/*</span>
        !          1590: 01603 <span class="comment"> *  Sebek header</span>
        !          1591: 01604 <span class="comment"> *  Static header size: 48 bytes</span>
        !          1592: 01605 <span class="comment"> */</span>
        !          1593: 01606 <span class="keyword">struct </span>libnet_sebek_hdr
        !          1594: 01607 {
        !          1595: 01608     u_int32_t magic;           <span class="comment">/* identify packets that should be hidden */</span>
        !          1596: 01609     u_int16_t version;         <span class="comment">/* protocol version, currently 1 */</span>
        !          1597: 01610 <span class="preprocessor">#define SEBEK_PROTO_VERSION 1</span>
        !          1598: 01611 <span class="preprocessor"></span>    u_int16_t type;            <span class="comment">/* type of record (read data is type 0, write data is type 1) */</span>
        !          1599: 01612 <span class="preprocessor">#define SEBEK_TYPE_READ     0  </span><span class="comment">/* Currently, only read is supported */</span>
        !          1600: 01613 <span class="preprocessor">#define SEBEK_TYPE_WRITE    1</span>
        !          1601: 01614 <span class="preprocessor"></span>    u_int32_t counter;         <span class="comment">/*  PDU counter used to identify when packet are lost */</span>
        !          1602: 01615     u_int32_t time_sec;        <span class="comment">/* seconds since EPOCH according to the honeypot */</span>
        !          1603: 01616     u_int32_t time_usec;       <span class="comment">/* residual microseconds */</span>
        !          1604: 01617     u_int32_t pid;             <span class="comment">/* PID */</span>
        !          1605: 01618     u_int32_t uid;             <span class="comment">/* UID */</span>
        !          1606: 01619     u_int32_t fd;              <span class="comment">/* FD */</span>
        !          1607: 01620 <span class="preprocessor">#define SEBEK_CMD_LENGTH   12</span>
        !          1608: 01621 <span class="preprocessor"></span>    u_int8_t cmd[SEBEK_CMD_LENGTH]; <span class="comment">/* 12 first characters of the command */</span>
        !          1609: 01622     u_int32_t length;          <span class="comment">/* length in bytes of the PDU's body */</span>
        !          1610: 01623 };
        !          1611: 01624 
        !          1612: 01625 
        !          1613: 01626 <span class="comment">/*</span>
        !          1614: 01627 <span class="comment"> *  VRRP header</span>
        !          1615: 01628 <span class="comment"> *  Virtual Router Redundancy Protocol</span>
        !          1616: 01629 <span class="comment"> *  Static header size: 8 bytes</span>
        !          1617: 01630 <span class="comment"> */</span>
        !          1618: 01631 <span class="preprocessor">#ifndef IPPROTO_VRRP</span>
        !          1619: 01632 <span class="preprocessor"></span><span class="preprocessor">#define IPPROTO_VRRP 112    </span><span class="comment">/* not everyone's got this */</span>
        !          1620: 01633 <span class="preprocessor">#endif</span>
        !          1621: 01634 <span class="preprocessor"></span><span class="keyword">struct </span>libnet_vrrp_hdr
        !          1622: 01635 {
        !          1623: 01636 <span class="preprocessor">#if (LIBNET_LIL_ENDIAN)</span>
        !          1624: 01637 <span class="preprocessor"></span>    u_int8_t vrrp_v:4,        <span class="comment">/* protocol version */</span>
        !          1625: 01638            vrrp_t:4;        <span class="comment">/* packet type */</span>
        !          1626: 01639 <span class="preprocessor">#endif</span>
        !          1627: 01640 <span class="preprocessor"></span><span class="preprocessor">#if (LIBNET_BIG_ENDIAN)</span>
        !          1628: 01641 <span class="preprocessor"></span>    u_int8_t vrrp_t:4,        <span class="comment">/* packet type */</span>
        !          1629: 01642            vrrp_v:4;        <span class="comment">/* protocol version */</span>
        !          1630: 01643 <span class="preprocessor">#endif</span>
        !          1631: 01644 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_VRRP_VERSION_01  0x1</span>
        !          1632: 01645 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_VRRP_VERSION_02  0x2</span>
        !          1633: 01646 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_VRRP_TYPE_ADVERT 0x1</span>
        !          1634: 01647 <span class="preprocessor"></span>    u_int8_t vrrp_vrouter_id; <span class="comment">/* virtual router id */</span>
        !          1635: 01648     u_int8_t vrrp_priority;   <span class="comment">/* priority */</span>
        !          1636: 01649     u_int8_t vrrp_ip_count;   <span class="comment">/* number of IP addresses */</span>
        !          1637: 01650     u_int8_t vrrp_auth_type;  <span class="comment">/* authorization type */</span>
        !          1638: 01651 <span class="preprocessor">#define LIBNET_VRRP_AUTH_NONE   0x1</span>
        !          1639: 01652 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_VRRP_AUTH_PASSWD 0x2</span>
        !          1640: 01653 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_VRRP_AUTH_IPAH   0x3</span>
        !          1641: 01654 <span class="preprocessor"></span>    u_int8_t vrrp_advert_int; <span class="comment">/* advertisement interval */</span>
        !          1642: 01655     u_int16_t vrrp_sum;       <span class="comment">/* checksum */</span>
        !          1643: 01656     <span class="comment">/* additional addresses */</span>
        !          1644: 01657     <span class="comment">/* authentication info */</span>
        !          1645: 01658 };
        !          1646: 01659 
        !          1647: 01660 <span class="preprocessor">#endif  </span><span class="comment">/* __LIBNET_HEADERS_H */</span>
        !          1648: 01661 
        !          1649: 01662 <span class="comment">/* EOF */</span>
        !          1650: </pre></div><hr size="1"><address style="align: right;"><small>Generated on Wed Mar 10 13:23:37 2004 for libnet by
        !          1651: <a href="http://www.doxygen.org/index.html">
        !          1652: <img src="doxygen.png" alt="doxygen" align="middle" border=0 > 
        !          1653: </a>1.3.4 </small></address>
        !          1654: </body>
        !          1655: </html>

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>