Blob Blame History Raw
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>libnet: libnet-macros.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">libnet&#160;<span id="projectnumber">1.1</span></div>
  </td>
 </tr>
 </tbody>
</table>
</div>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#define-members">Defines</a>  </div>
  <div class="headertitle">
<div class="title">libnet-macros.h File Reference</div>  </div>
</div>
<div class="contents">

<p>libnet macros and symbolic constants  
<a href="#details">More...</a></p>

<p><a href="libnet-macros_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="libnet-macros_8h.html#ac67cb6e9b00fd492cc3a9247e9477d87">LIBNET_DONT_RESOLVE</a>&#160;&#160;&#160;0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="libnet-macros_8h.html#a6733960f6981f1930b2d1a489df89cc7">LIBNET_RESOLVE</a>&#160;&#160;&#160;1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="libnet-macros_8h.html#a5ff9536ca9bbe6f73f69bec817962742">LIBNET_ON</a>&#160;&#160;&#160;0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="libnet-macros_8h.html#af87da67c016a9791d256c2d71bf0b0ac">LIBNET_OFF</a>&#160;&#160;&#160;1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="libnet-macros_8h.html#a9c76fe8da8e411fe1db9f75583dc1b8a">IN6ADDR_ERROR_INIT</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="libnet-macros_8h.html#a96a6017948aa76e5a5d415c3227348df">LIBNET_PR2</a>&#160;&#160;&#160;0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6e6269313abecb5d687d57d21b2b49a1"></a><!-- doxytag: member="libnet&#45;macros.h::LIBNET_PR8" ref="a6e6269313abecb5d687d57d21b2b49a1" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LIBNET_PR8</b>&#160;&#160;&#160;1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a048203597578d34944b2def3b3f1f7ce"></a><!-- doxytag: member="libnet&#45;macros.h::LIBNET_PR16" ref="a048203597578d34944b2def3b3f1f7ce" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LIBNET_PR16</b>&#160;&#160;&#160;2</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8dfe8585239d898a1d4c8dbeac2356ad"></a><!-- doxytag: member="libnet&#45;macros.h::LIBNET_PRu16" ref="a8dfe8585239d898a1d4c8dbeac2356ad" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LIBNET_PRu16</b>&#160;&#160;&#160;3</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3b4abb739dd6f288b005395d47e1fe02"></a><!-- doxytag: member="libnet&#45;macros.h::LIBNET_PR32" ref="a3b4abb739dd6f288b005395d47e1fe02" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LIBNET_PR32</b>&#160;&#160;&#160;4</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6cf838481f5b7726dea022fe92a3770f"></a><!-- doxytag: member="libnet&#45;macros.h::LIBNET_PRu32" ref="a6cf838481f5b7726dea022fe92a3770f" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LIBNET_PRu32</b>&#160;&#160;&#160;5</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2cb20e30c5929490777df58e91d16f1f"></a><!-- doxytag: member="libnet&#45;macros.h::LIBNET_PRAND_MAX" ref="a2cb20e30c5929490777df58e91d16f1f" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LIBNET_PRAND_MAX</b>&#160;&#160;&#160;0xffffffff</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="libnet-macros_8h.html#ac7301c95aa36d66e8904979650b5189d">LIBNET_MAX_PACKET</a>&#160;&#160;&#160;0xffff</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1554ef48c7e8f7bd5d6ef2655e59ed07"></a><!-- doxytag: member="libnet&#45;macros.h::IP_MAXPACKET" ref="a1554ef48c7e8f7bd5d6ef2655e59ed07" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>IP_MAXPACKET</b>&#160;&#160;&#160;0xffff</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abf4fcaacb1ad2010711b7c880ec2ed20"></a><!-- doxytag: member="libnet&#45;macros.h::ETHER_ADDR_LEN" ref="abf4fcaacb1ad2010711b7c880ec2ed20" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>ETHER_ADDR_LEN</b>&#160;&#160;&#160;0x6</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acaac696cbf5938db15328848825b7c7b"></a><!-- doxytag: member="libnet&#45;macros.h::FDDI_ADDR_LEN" ref="acaac696cbf5938db15328848825b7c7b" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>FDDI_ADDR_LEN</b>&#160;&#160;&#160;0x6</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6786a3f4d3531850fda0b55b0f00663c"></a><!-- doxytag: member="libnet&#45;macros.h::TOKEN_RING_ADDR_LEN" ref="a6786a3f4d3531850fda0b55b0f00663c" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>TOKEN_RING_ADDR_LEN</b>&#160;&#160;&#160;0x6</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9c7276e3c31964435cb1e5bd6e589328"></a><!-- doxytag: member="libnet&#45;macros.h::LIBNET_ORG_CODE_SIZE" ref="a9c7276e3c31964435cb1e5bd6e589328" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LIBNET_ORG_CODE_SIZE</b>&#160;&#160;&#160;0x3</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="libnet-macros_8h.html#a2d720375e2ef5a85a62d6069283a5223">LIBNET_ERRBUF_SIZE</a>&#160;&#160;&#160;0x100</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="libnet-macros_8h.html#ae9cd154f8cb482809ee456b6ac43dea5">LIBNET_MAXOPTION_SIZE</a>&#160;&#160;&#160;0x28</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1630dbffade7ca1bc66c747c9c2137de"></a><!-- doxytag: member="libnet&#45;macros.h::FIX" ref="a1630dbffade7ca1bc66c747c9c2137de" args="(n)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>FIX</b>(n)&#160;&#160;&#160;(n)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a06d48caec858096d138be9e22aa62ecc"></a><!-- doxytag: member="libnet&#45;macros.h::UNFIX" ref="a06d48caec858096d138be9e22aa62ecc" args="(n)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>UNFIX</b>(n)&#160;&#160;&#160;(n)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>LIBNET_DO_PAYLOAD</b>(l, p)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aec7ad14d1e9038afd97f5a9145ed150f"></a><!-- doxytag: member="libnet&#45;macros.h::LIBNET_CKSUM_CARRY" ref="aec7ad14d1e9038afd97f5a9145ed150f" args="(x)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LIBNET_CKSUM_CARRY</b>(x)&#160;&#160;&#160;(x = (x &gt;&gt; 16) + (x &amp; 0xffff), (~(x + (x &gt;&gt; 16)) &amp; 0xffff))</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a78c38337cc7b1e9ab572ed97d3aaa702"></a><!-- doxytag: member="libnet&#45;macros.h::LIBNET_OSPF_AUTHCPY" ref="a78c38337cc7b1e9ab572ed97d3aaa702" args="(x, y)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LIBNET_OSPF_AUTHCPY</b>(x, y)&#160;&#160;&#160;memcpy((uint8_t *)x, (uint8_t *)y, sizeof(y))</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abba894cfc9afa729b9fae7a7daef128b"></a><!-- doxytag: member="libnet&#45;macros.h::LIBNET_OSPF_CKSUMBUF" ref="abba894cfc9afa729b9fae7a7daef128b" args="(x, y)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LIBNET_OSPF_CKSUMBUF</b>(x, y)&#160;&#160;&#160;memcpy((uint8_t *)x, (uint8_t *)y, sizeof(y))</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9a522b76610c4ceadb57b6b839f2fdbf"></a><!-- doxytag: member="libnet&#45;macros.h::LIBNET_NTP_DO_LI_VN_MODE" ref="a9a522b76610c4ceadb57b6b839f2fdbf" args="(li, vn, md)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LIBNET_NTP_DO_LI_VN_MODE</b>(li, vn, md)&#160;&#160;&#160;((uint8_t)((((li) &lt;&lt; 6) &amp; 0xc0) | (((vn) &lt;&lt; 3) &amp; 0x38) | ((md) &amp; 0x7)))</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2b3fe6da087ee254d764d9d3aad20116"></a><!-- doxytag: member="libnet&#45;macros.h::LIBNET_ISLOOPBACK" ref="a2b3fe6da087ee254d764d9d3aad20116" args="(p)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LIBNET_ISLOOPBACK</b>(p)&#160;&#160;&#160;(strcmp((p)-&gt;ifr_name, &quot;lo&quot;) == 0)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aadca40791ffec09cf042012b3c2e0379"></a><!-- doxytag: member="libnet&#45;macros.h::LIBNET_ISADVMODE" ref="aadca40791ffec09cf042012b3c2e0379" args="(x)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LIBNET_ISADVMODE</b>(x)&#160;&#160;&#160;(x &amp; 0x08)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aad353d408faa7236590b8092b8e608b9"></a><!-- doxytag: member="libnet&#45;macros.h::LIBNET_LABEL_SIZE" ref="aad353d408faa7236590b8092b8e608b9" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LIBNET_LABEL_SIZE</b>&#160;&#160;&#160;64</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adff66f7e27996597f9f486e546edb4e6"></a><!-- doxytag: member="libnet&#45;macros.h::LIBNET_LABEL_DEFAULT" ref="adff66f7e27996597f9f486e546edb4e6" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LIBNET_LABEL_DEFAULT</b>&#160;&#160;&#160;&quot;cardshark&quot;</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa090ca83cdf9f0828900d826d30d8eba"></a><!-- doxytag: member="libnet&#45;macros.h::CQ_LOCK_UNLOCKED" ref="aa090ca83cdf9f0828900d826d30d8eba" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>CQ_LOCK_UNLOCKED</b>&#160;&#160;&#160;(u_int)0x00000000</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a69ad1ac0277dfc2ce9c9b41e9ea83ebc"></a><!-- doxytag: member="libnet&#45;macros.h::CQ_LOCK_READ" ref="a69ad1ac0277dfc2ce9c9b41e9ea83ebc" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>CQ_LOCK_READ</b>&#160;&#160;&#160;(u_int)0x00000001</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeb4a47cde2d621731fd62b709c1dcb21"></a><!-- doxytag: member="libnet&#45;macros.h::CQ_LOCK_WRITE" ref="aeb4a47cde2d621731fd62b709c1dcb21" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>CQ_LOCK_WRITE</b>&#160;&#160;&#160;(u_int)0x00000002</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="libnet-macros_8h.html#af36eb84eee10c525720134cfadb50a3e">for_each_context_in_cq</a>(l)&#160;&#160;&#160;for (l = libnet_cq_head(); libnet_cq_last(); l = libnet_cq_next())</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aed7ebccea1f0ea8ccde7adbfb273cd74"></a><!-- doxytag: member="libnet&#45;macros.h::cq_is_wlocked" ref="aed7ebccea1f0ea8ccde7adbfb273cd74" args="()" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>cq_is_wlocked</b>()&#160;&#160;&#160;(l_cqd.cq_lock &amp; CQ_LOCK_WRITE)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abf62890307cdd947227bc8e261565ed7"></a><!-- doxytag: member="libnet&#45;macros.h::cq_is_rlocked" ref="abf62890307cdd947227bc8e261565ed7" args="()" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>cq_is_rlocked</b>()&#160;&#160;&#160;(l_cqd.cq_lock &amp; CQ_LOCK_READ)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab21078806a925321484a28f8b3d46fb3"></a><!-- doxytag: member="libnet&#45;macros.h::cq_is_locked" ref="ab21078806a925321484a28f8b3d46fb3" args="()" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>cq_is_locked</b>()&#160;&#160;&#160;(l_cqd.cq_lock &amp; (CQ_LOCK_READ | CQ_LOCK_WRITE))</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af2c376014dcb2eb2d229db3d51e4c177"></a><!-- doxytag: member="libnet&#45;macros.h::check_cq_lock" ref="af2c376014dcb2eb2d229db3d51e4c177" args="(x)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>check_cq_lock</b>(x)&#160;&#160;&#160;(l_cqd.cq_lock &amp; x)</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>libnet macros and symbolic constants </p>
</div><hr/><h2>Define Documentation</h2>
<a class="anchor" id="af36eb84eee10c525720134cfadb50a3e"></a><!-- doxytag: member="libnet&#45;macros.h::for_each_context_in_cq" ref="af36eb84eee10c525720134cfadb50a3e" args="(l)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define for_each_context_in_cq</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">l</td><td>)</td>
          <td>&#160;&#160;&#160;for (l = libnet_cq_head(); libnet_cq_last(); l = libnet_cq_next())</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Provides an interface to iterate through the context queue of libnet contexts. Before calling this macro, be sure to set the queue using <a class="el" href="libnet-functions_8h.html#a7e98a045ac6e29ca421507d9a200b5aa">libnet_cq_head()</a>. </p>

</div>
</div>
<a class="anchor" id="a9c76fe8da8e411fe1db9f75583dc1b8a"></a><!-- doxytag: member="libnet&#45;macros.h::IN6ADDR_ERROR_INIT" ref="a9c76fe8da8e411fe1db9f75583dc1b8a" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define IN6ADDR_ERROR_INIT</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment">{ { { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \
                                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \
                                 0xff, 0xff } } }
</pre></div><p>IPv6 error code </p>

</div>
</div>
<a class="anchor" id="ac3d8a2eba10526498a21c2c6d41bf846"></a><!-- doxytag: member="libnet&#45;macros.h::LIBNET_DO_PAYLOAD" ref="ac3d8a2eba10526498a21c2c6d41bf846" args="(l, p)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define LIBNET_DO_PAYLOAD</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">l, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">p&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">if</span> (payload_s &amp;&amp; !payload)                                                   \
{                                                                            \
    snprintf(l-&gt;err_buf, <a class="code" href="libnet-macros_8h.html#a2d720375e2ef5a85a62d6069283a5223">LIBNET_ERRBUF_SIZE</a>,                                 \
            <span class="stringliteral">&quot;%s(): payload inconsistency\n&quot;</span>, __func__);                      \
    <span class="keywordflow">goto</span> bad;                                                                \
}                                                                            \
<span class="keywordflow">if</span> (payload_s)                                                               \
{                                                                            \
    n = libnet_pblock_append(l, p, payload, payload_s);                      \
    <span class="keywordflow">if</span> (n == (uint32_t) - 1)                                                 \
    {                                                                        \
        <span class="keywordflow">goto</span> bad;                                                            \
    }                                                                        \
}                                                                            \
</pre></div>
</div>
</div>
<a class="anchor" id="ac67cb6e9b00fd492cc3a9247e9477d87"></a><!-- doxytag: member="libnet&#45;macros.h::LIBNET_DONT_RESOLVE" ref="ac67cb6e9b00fd492cc3a9247e9477d87" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define LIBNET_DONT_RESOLVE&#160;&#160;&#160;0</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Used for libnet's name resolution functions, specifies that no DNS lookups should be performed and the IP address should be kept in numeric form. </p>

</div>
</div>
<a class="anchor" id="a2d720375e2ef5a85a62d6069283a5223"></a><!-- doxytag: member="libnet&#45;macros.h::LIBNET_ERRBUF_SIZE" ref="a2d720375e2ef5a85a62d6069283a5223" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define LIBNET_ERRBUF_SIZE&#160;&#160;&#160;0x100</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>The libnet error buffer is 256 bytes long. </p>

</div>
</div>
<a class="anchor" id="ac7301c95aa36d66e8904979650b5189d"></a><!-- doxytag: member="libnet&#45;macros.h::LIBNET_MAX_PACKET" ref="ac7301c95aa36d66e8904979650b5189d" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define LIBNET_MAX_PACKET&#160;&#160;&#160;0xffff</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>The biggest an IP packet can be -- 65,535 bytes. </p>

</div>
</div>
<a class="anchor" id="ae9cd154f8cb482809ee456b6ac43dea5"></a><!-- doxytag: member="libnet&#45;macros.h::LIBNET_MAXOPTION_SIZE" ref="ae9cd154f8cb482809ee456b6ac43dea5" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define LIBNET_MAXOPTION_SIZE&#160;&#160;&#160;0x28</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>IP and TCP options can be up to 40 bytes long. </p>

</div>
</div>
<a class="anchor" id="af87da67c016a9791d256c2d71bf0b0ac"></a><!-- doxytag: member="libnet&#45;macros.h::LIBNET_OFF" ref="af87da67c016a9791d256c2d71bf0b0ac" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define LIBNET_OFF&#160;&#160;&#160;1</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Used several places, to specify "on" or "one" </p>

</div>
</div>
<a class="anchor" id="a5ff9536ca9bbe6f73f69bec817962742"></a><!-- doxytag: member="libnet&#45;macros.h::LIBNET_ON" ref="a5ff9536ca9bbe6f73f69bec817962742" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define LIBNET_ON&#160;&#160;&#160;0</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Used several places, to specify "on" or "one" </p>

</div>
</div>
<a class="anchor" id="a96a6017948aa76e5a5d415c3227348df"></a><!-- doxytag: member="libnet&#45;macros.h::LIBNET_PR2" ref="a96a6017948aa76e5a5d415c3227348df" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define LIBNET_PR2&#160;&#160;&#160;0</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Used for <a class="el" href="libnet-functions_8h.html#ab74bd339ef6343077dc79bab2063aee3">libnet_get_prand()</a> to specify function disposition </p>

</div>
</div>
<a class="anchor" id="a6733960f6981f1930b2d1a489df89cc7"></a><!-- doxytag: member="libnet&#45;macros.h::LIBNET_RESOLVE" ref="a6733960f6981f1930b2d1a489df89cc7" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define LIBNET_RESOLVE&#160;&#160;&#160;1</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Used for libnet's name resolution functions, specifies that a DNS lookup can be performed if needed to resolve the IP address to a canonical form. </p>

</div>
</div>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Thu Mar 29 2012 14:19:18 for libnet by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>