<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>libnet: libnet-macros.h File Reference</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> <link href="tabs.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.5.3 --> <div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> </ul> </div> <h1>libnet-macros.h File Reference</h1>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><table border="0" cellpadding="0" cellspacing="0"> <tr><td></td></tr> <tr><td colspan="2"><br><h2>Defines</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="libnet-macros_8h.html#c67cb6e9b00fd492cc3a9247e9477d87">LIBNET_DONT_RESOLVE</a> 0</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="libnet-macros_8h.html#6733960f6981f1930b2d1a489df89cc7">LIBNET_RESOLVE</a> 1</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="libnet-macros_8h.html#5ff9536ca9bbe6f73f69bec817962742">LIBNET_ON</a> 0</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="libnet-macros_8h.html#f87da67c016a9791d256c2d71bf0b0ac">LIBNET_OFF</a> 1</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="libnet-macros_8h.html#9c76fe8da8e411fe1db9f75583dc1b8a">IN6ADDR_ERROR_INIT</a></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="libnet-macros_8h.html#96a6017948aa76e5a5d415c3227348df">LIBNET_PR2</a> 0</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6e6269313abecb5d687d57d21b2b49a1"></a><!-- doxytag: member="libnet-macros.h::LIBNET_PR8" ref="6e6269313abecb5d687d57d21b2b49a1" args="" --> #define </td><td class="memItemRight" valign="bottom"><b>LIBNET_PR8</b> 1</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="048203597578d34944b2def3b3f1f7ce"></a><!-- doxytag: member="libnet-macros.h::LIBNET_PR16" ref="048203597578d34944b2def3b3f1f7ce" args="" --> #define </td><td class="memItemRight" valign="bottom"><b>LIBNET_PR16</b> 2</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8dfe8585239d898a1d4c8dbeac2356ad"></a><!-- doxytag: member="libnet-macros.h::LIBNET_PRu16" ref="8dfe8585239d898a1d4c8dbeac2356ad" args="" --> #define </td><td class="memItemRight" valign="bottom"><b>LIBNET_PRu16</b> 3</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3b4abb739dd6f288b005395d47e1fe02"></a><!-- doxytag: member="libnet-macros.h::LIBNET_PR32" ref="3b4abb739dd6f288b005395d47e1fe02" args="" --> #define </td><td class="memItemRight" valign="bottom"><b>LIBNET_PR32</b> 4</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6cf838481f5b7726dea022fe92a3770f"></a><!-- doxytag: member="libnet-macros.h::LIBNET_PRu32" ref="6cf838481f5b7726dea022fe92a3770f" args="" --> #define </td><td class="memItemRight" valign="bottom"><b>LIBNET_PRu32</b> 5</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2cb20e30c5929490777df58e91d16f1f"></a><!-- doxytag: member="libnet-macros.h::LIBNET_PRAND_MAX" ref="2cb20e30c5929490777df58e91d16f1f" args="" --> #define </td><td class="memItemRight" valign="bottom"><b>LIBNET_PRAND_MAX</b> 0xffffffff</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="libnet-macros_8h.html#c7301c95aa36d66e8904979650b5189d">LIBNET_MAX_PACKET</a> 0xffff</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1554ef48c7e8f7bd5d6ef2655e59ed07"></a><!-- doxytag: member="libnet-macros.h::IP_MAXPACKET" ref="1554ef48c7e8f7bd5d6ef2655e59ed07" args="" --> #define </td><td class="memItemRight" valign="bottom"><b>IP_MAXPACKET</b> 0xffff</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="bf4fcaacb1ad2010711b7c880ec2ed20"></a><!-- doxytag: member="libnet-macros.h::ETHER_ADDR_LEN" ref="bf4fcaacb1ad2010711b7c880ec2ed20" args="" --> #define </td><td class="memItemRight" valign="bottom"><b>ETHER_ADDR_LEN</b> 0x6</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="caac696cbf5938db15328848825b7c7b"></a><!-- doxytag: member="libnet-macros.h::FDDI_ADDR_LEN" ref="caac696cbf5938db15328848825b7c7b" args="" --> #define </td><td class="memItemRight" valign="bottom"><b>FDDI_ADDR_LEN</b> 0x6</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6786a3f4d3531850fda0b55b0f00663c"></a><!-- doxytag: member="libnet-macros.h::TOKEN_RING_ADDR_LEN" ref="6786a3f4d3531850fda0b55b0f00663c" args="" --> #define </td><td class="memItemRight" valign="bottom"><b>TOKEN_RING_ADDR_LEN</b> 0x6</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9c7276e3c31964435cb1e5bd6e589328"></a><!-- doxytag: member="libnet-macros.h::LIBNET_ORG_CODE_SIZE" ref="9c7276e3c31964435cb1e5bd6e589328" args="" --> #define </td><td class="memItemRight" valign="bottom"><b>LIBNET_ORG_CODE_SIZE</b> 0x3</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="libnet-macros_8h.html#2d720375e2ef5a85a62d6069283a5223">LIBNET_ERRBUF_SIZE</a> 0x100</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="libnet-macros_8h.html#e9cd154f8cb482809ee456b6ac43dea5">LIBNET_MAXOPTION_SIZE</a> 0x28</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1630dbffade7ca1bc66c747c9c2137de"></a><!-- doxytag: member="libnet-macros.h::FIX" ref="1630dbffade7ca1bc66c747c9c2137de" args="(n)" --> #define </td><td class="memItemRight" valign="bottom"><b>FIX</b>(n) (n)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="06d48caec858096d138be9e22aa62ecc"></a><!-- doxytag: member="libnet-macros.h::UNFIX" ref="06d48caec858096d138be9e22aa62ecc" args="(n)" --> #define </td><td class="memItemRight" valign="bottom"><b>UNFIX</b>(n) (n)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><b>LIBNET_DO_PAYLOAD</b>(l, p)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ec7ad14d1e9038afd97f5a9145ed150f"></a><!-- doxytag: member="libnet-macros.h::LIBNET_CKSUM_CARRY" ref="ec7ad14d1e9038afd97f5a9145ed150f" args="(x)" --> #define </td><td class="memItemRight" valign="bottom"><b>LIBNET_CKSUM_CARRY</b>(x) (x = (x >> 16) + (x & 0xffff), (~(x + (x >> 16)) & 0xffff))</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="78c38337cc7b1e9ab572ed97d3aaa702"></a><!-- doxytag: member="libnet-macros.h::LIBNET_OSPF_AUTHCPY" ref="78c38337cc7b1e9ab572ed97d3aaa702" args="(x, y)" --> #define </td><td class="memItemRight" valign="bottom"><b>LIBNET_OSPF_AUTHCPY</b>(x, y) memcpy((u_int8_t *)x, (u_int8_t *)y, sizeof(y))</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="bba894cfc9afa729b9fae7a7daef128b"></a><!-- doxytag: member="libnet-macros.h::LIBNET_OSPF_CKSUMBUF" ref="bba894cfc9afa729b9fae7a7daef128b" args="(x, y)" --> #define </td><td class="memItemRight" valign="bottom"><b>LIBNET_OSPF_CKSUMBUF</b>(x, y) memcpy((u_int8_t *)x, (u_int8_t *)y, sizeof(y))</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9a522b76610c4ceadb57b6b839f2fdbf"></a><!-- doxytag: member="libnet-macros.h::LIBNET_NTP_DO_LI_VN_MODE" ref="9a522b76610c4ceadb57b6b839f2fdbf" args="(li, vn, md)" --> #define </td><td class="memItemRight" valign="bottom"><b>LIBNET_NTP_DO_LI_VN_MODE</b>(li, vn, md) ((u_int8_t)((((li) << 6) & 0xc0) | (((vn) << 3) & 0x38) | ((md) & 0x7)))</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2b3fe6da087ee254d764d9d3aad20116"></a><!-- doxytag: member="libnet-macros.h::LIBNET_ISLOOPBACK" ref="2b3fe6da087ee254d764d9d3aad20116" args="(p)" --> #define </td><td class="memItemRight" valign="bottom"><b>LIBNET_ISLOOPBACK</b>(p) (strcmp((p)->ifr_name, "lo0") == 0)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="adca40791ffec09cf042012b3c2e0379"></a><!-- doxytag: member="libnet-macros.h::LIBNET_ISADVMODE" ref="adca40791ffec09cf042012b3c2e0379" args="(x)" --> #define </td><td class="memItemRight" valign="bottom"><b>LIBNET_ISADVMODE</b>(x) (x & 0x08)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ad353d408faa7236590b8092b8e608b9"></a><!-- doxytag: member="libnet-macros.h::LIBNET_LABEL_SIZE" ref="ad353d408faa7236590b8092b8e608b9" args="" --> #define </td><td class="memItemRight" valign="bottom"><b>LIBNET_LABEL_SIZE</b> 64</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="dff66f7e27996597f9f486e546edb4e6"></a><!-- doxytag: member="libnet-macros.h::LIBNET_LABEL_DEFAULT" ref="dff66f7e27996597f9f486e546edb4e6" args="" --> #define </td><td class="memItemRight" valign="bottom"><b>LIBNET_LABEL_DEFAULT</b> "cardshark"</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a090ca83cdf9f0828900d826d30d8eba"></a><!-- doxytag: member="libnet-macros.h::CQ_LOCK_UNLOCKED" ref="a090ca83cdf9f0828900d826d30d8eba" args="" --> #define </td><td class="memItemRight" valign="bottom"><b>CQ_LOCK_UNLOCKED</b> (u_int)0x00000000</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="69ad1ac0277dfc2ce9c9b41e9ea83ebc"></a><!-- doxytag: member="libnet-macros.h::CQ_LOCK_READ" ref="69ad1ac0277dfc2ce9c9b41e9ea83ebc" args="" --> #define </td><td class="memItemRight" valign="bottom"><b>CQ_LOCK_READ</b> (u_int)0x00000001</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="eb4a47cde2d621731fd62b709c1dcb21"></a><!-- doxytag: member="libnet-macros.h::CQ_LOCK_WRITE" ref="eb4a47cde2d621731fd62b709c1dcb21" args="" --> #define </td><td class="memItemRight" valign="bottom"><b>CQ_LOCK_WRITE</b> (u_int)0x00000002</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="libnet-macros_8h.html#f36eb84eee10c525720134cfadb50a3e">for_each_context_in_cq</a>(l) for (l = libnet_cq_head(); libnet_cq_last(); l = libnet_cq_next())</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ed7ebccea1f0ea8ccde7adbfb273cd74"></a><!-- doxytag: member="libnet-macros.h::cq_is_wlocked" ref="ed7ebccea1f0ea8ccde7adbfb273cd74" args="()" --> #define </td><td class="memItemRight" valign="bottom"><b>cq_is_wlocked</b>() (l_cqd.cq_lock & CQ_LOCK_WRITE)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="bf62890307cdd947227bc8e261565ed7"></a><!-- doxytag: member="libnet-macros.h::cq_is_rlocked" ref="bf62890307cdd947227bc8e261565ed7" args="()" --> #define </td><td class="memItemRight" valign="bottom"><b>cq_is_rlocked</b>() (l_cqd.cq_lock & CQ_LOCK_READ)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b21078806a925321484a28f8b3d46fb3"></a><!-- doxytag: member="libnet-macros.h::cq_is_locked" ref="b21078806a925321484a28f8b3d46fb3" args="()" --> #define </td><td class="memItemRight" valign="bottom"><b>cq_is_locked</b>() (l_cqd.cq_lock & (CQ_LOCK_READ | CQ_LOCK_WRITE))</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f2c376014dcb2eb2d229db3d51e4c177"></a><!-- doxytag: member="libnet-macros.h::check_cq_lock" ref="f2c376014dcb2eb2d229db3d51e4c177" args="(x)" --> #define </td><td class="memItemRight" valign="bottom"><b>check_cq_lock</b>(x) (l_cqd.cq_lock & x)</td></tr> </table> <hr><a name="_details"></a><h2>Detailed Description</h2> libnet macros and symbolic constants <p> <hr><h2>Define Documentation</h2> <a class="anchor" name="f36eb84eee10c525720134cfadb50a3e"></a><!-- doxytag: member="libnet-macros.h::for_each_context_in_cq" ref="f36eb84eee10c525720134cfadb50a3e" 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">l </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"> 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#7e98a045ac6e29ca421507d9a200b5aa">libnet_cq_head()</a>. </div> </div><p> <a class="anchor" name="9c76fe8da8e411fe1db9f75583dc1b8a"></a><!-- doxytag: member="libnet-macros.h::IN6ADDR_ERROR_INIT" ref="9c76fe8da8e411fe1db9f75583dc1b8a" 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"> <p> <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>IPv6 error code </div> </div><p> <a class="anchor" name="c3d8a2eba10526498a21c2c6d41bf846"></a><!-- doxytag: member="libnet-macros.h::LIBNET_DO_PAYLOAD" ref="c3d8a2eba10526498a21c2c6d41bf846" 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">l, <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">p </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> <b>Value:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">if</span> ((payload && !payload_s) || (!payload && payload_s)) \ { \ snprintf(l->err_buf, <a class="code" href="libnet-macros_8h.html#2d720375e2ef5a85a62d6069283a5223">LIBNET_ERRBUF_SIZE</a>, \ <span class="stringliteral">"%s(): payload inconsistency\n"</span>, __func__); \ <span class="keywordflow">goto</span> bad; \ } \ <span class="keywordflow">if</span> (payload && payload_s) \ { \ n = libnet_pblock_append(l, p, payload, payload_s); \ <span class="keywordflow">if</span> (n == (u_int32_t) - 1) \ { \ <span class="keywordflow">goto</span> bad; \ } \ } \ </pre></div> </div> </div><p> <a class="anchor" name="c67cb6e9b00fd492cc3a9247e9477d87"></a><!-- doxytag: member="libnet-macros.h::LIBNET_DONT_RESOLVE" ref="c67cb6e9b00fd492cc3a9247e9477d87" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define LIBNET_DONT_RESOLVE 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. </div> </div><p> <a class="anchor" name="2d720375e2ef5a85a62d6069283a5223"></a><!-- doxytag: member="libnet-macros.h::LIBNET_ERRBUF_SIZE" ref="2d720375e2ef5a85a62d6069283a5223" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define LIBNET_ERRBUF_SIZE 0x100 </td> </tr> </table> </div> <div class="memdoc"> <p> The libnet error buffer is 256 bytes long. </div> </div><p> <a class="anchor" name="c7301c95aa36d66e8904979650b5189d"></a><!-- doxytag: member="libnet-macros.h::LIBNET_MAX_PACKET" ref="c7301c95aa36d66e8904979650b5189d" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define LIBNET_MAX_PACKET 0xffff </td> </tr> </table> </div> <div class="memdoc"> <p> The biggest an IP packet can be -- 65,535 bytes. </div> </div><p> <a class="anchor" name="e9cd154f8cb482809ee456b6ac43dea5"></a><!-- doxytag: member="libnet-macros.h::LIBNET_MAXOPTION_SIZE" ref="e9cd154f8cb482809ee456b6ac43dea5" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define LIBNET_MAXOPTION_SIZE 0x28 </td> </tr> </table> </div> <div class="memdoc"> <p> IP and TCP options can be up to 40 bytes long. </div> </div><p> <a class="anchor" name="f87da67c016a9791d256c2d71bf0b0ac"></a><!-- doxytag: member="libnet-macros.h::LIBNET_OFF" ref="f87da67c016a9791d256c2d71bf0b0ac" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define LIBNET_OFF 1 </td> </tr> </table> </div> <div class="memdoc"> <p> Used several places, to specify "on" or "one" </div> </div><p> <a class="anchor" name="5ff9536ca9bbe6f73f69bec817962742"></a><!-- doxytag: member="libnet-macros.h::LIBNET_ON" ref="5ff9536ca9bbe6f73f69bec817962742" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define LIBNET_ON 0 </td> </tr> </table> </div> <div class="memdoc"> <p> Used several places, to specify "on" or "one" </div> </div><p> <a class="anchor" name="96a6017948aa76e5a5d415c3227348df"></a><!-- doxytag: member="libnet-macros.h::LIBNET_PR2" ref="96a6017948aa76e5a5d415c3227348df" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define LIBNET_PR2 0 </td> </tr> </table> </div> <div class="memdoc"> <p> Used for <a class="el" href="libnet-functions_8h.html#453d816dc8adffaefc040a1bf5bd9b5f">libnet_get_prand()</a> to specify function disposition </div> </div><p> <a class="anchor" name="6733960f6981f1930b2d1a489df89cc7"></a><!-- doxytag: member="libnet-macros.h::LIBNET_RESOLVE" ref="6733960f6981f1930b2d1a489df89cc7" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define LIBNET_RESOLVE 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. </div> </div><p> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Jun 9 16:16:39 2009 for libnet by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address> </body> </html>