<!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>libnl: Neighbour Tables</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.3 --> <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">libnl <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 Page</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li><a href="files.html"><span>Files</span></a></li> </ul> </div> </div> <div class="header"> <div class="headertitle"> <h1>Neighbour Tables</h1> </div> <div class="ingroups"><a class="el" href="group__rtnl.html">Routing Netlink</a></div></div> <div class="contents"> <table class="memberdecls"> <tr><td colspan="2"><h2><a name="member-group"></a> Allocation/Freeing</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4e0fa31f4a8455f326437880f7dac2c8"></a><!-- doxytag: member="neightbl::rtnl_neightbl_alloc" ref="ga4e0fa31f4a8455f326437880f7dac2c8" args="(void)" --> struct rtnl_neightbl * </td><td class="memItemRight" valign="bottom"><b>rtnl_neightbl_alloc</b> (void)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga3b6fc1f5e22f8302fddd7647e791d411"></a><!-- doxytag: member="neightbl::rtnl_neightbl_put" ref="ga3b6fc1f5e22f8302fddd7647e791d411" args="(struct rtnl_neightbl *neightbl)" --> void </td><td class="memItemRight" valign="bottom"><b>rtnl_neightbl_put</b> (struct rtnl_neightbl *neightbl)</td></tr> <tr><td colspan="2"><h2><a name="member-group"></a> Neighbour Table Cache Management</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">struct nl_cache * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__neightbl.html#ga6796d6db2820370e36d35eca76603afd">rtnl_neightbl_alloc_cache</a> (struct nl_handle *handle)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Build a neighbour table cache including all neighbour tables currently configured in the kernel. <a href="#ga6796d6db2820370e36d35eca76603afd"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">struct rtnl_neightbl * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__neightbl.html#ga2f5342210758be5287e40d685e0140a5">rtnl_neightbl_get</a> (struct nl_cache *cache, const char *name, int ifindex)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Lookup neighbour table by name and optional interface index. <a href="#ga2f5342210758be5287e40d685e0140a5"></a><br/></td></tr> <tr><td colspan="2"><h2><a name="member-group"></a> Neighbour Table Modifications</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">struct nl_msg * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__neightbl.html#gaaff1f5ae4004a152f4e659bb0ecc596f">rtnl_neightbl_build_change_request</a> (struct rtnl_neightbl *old, struct rtnl_neightbl *tmpl)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Builds a netlink change request message to change neighbour table attributes. <a href="#gaaff1f5ae4004a152f4e659bb0ecc596f"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__neightbl.html#ga3740cdf50ee42c3f5ab4db67dd8a877e">rtnl_neightbl_change</a> (struct nl_handle *handle, struct rtnl_neightbl *old, struct rtnl_neightbl *tmpl)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Change neighbour table attributes. <a href="#ga3740cdf50ee42c3f5ab4db67dd8a877e"></a><br/></td></tr> <tr><td colspan="2"><h2><a name="member-group"></a> Attribute Modification</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga55c25600928da0d4979aaa86d26188b0"></a><!-- doxytag: member="neightbl::rtnl_neightbl_set_family" ref="ga55c25600928da0d4979aaa86d26188b0" args="(struct rtnl_neightbl *ntbl, int family)" --> void </td><td class="memItemRight" valign="bottom"><b>rtnl_neightbl_set_family</b> (struct rtnl_neightbl *ntbl, int family)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga5b70218582c80574d073666eb8919a93"></a><!-- doxytag: member="neightbl::rtnl_neightbl_set_gc_interval" ref="ga5b70218582c80574d073666eb8919a93" args="(struct rtnl_neightbl *ntbl, uint64_t ms)" --> void </td><td class="memItemRight" valign="bottom"><b>rtnl_neightbl_set_gc_interval</b> (struct rtnl_neightbl *ntbl, uint64_t ms)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga6d81ee01c8c05b66b3147dd43b53f465"></a><!-- doxytag: member="neightbl::rtnl_neightbl_set_gc_tresh1" ref="ga6d81ee01c8c05b66b3147dd43b53f465" args="(struct rtnl_neightbl *ntbl, int thresh)" --> void </td><td class="memItemRight" valign="bottom"><b>rtnl_neightbl_set_gc_tresh1</b> (struct rtnl_neightbl *ntbl, int thresh)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga16915f971a46488650922dc898f45fbc"></a><!-- doxytag: member="neightbl::rtnl_neightbl_set_gc_tresh2" ref="ga16915f971a46488650922dc898f45fbc" args="(struct rtnl_neightbl *ntbl, int thresh)" --> void </td><td class="memItemRight" valign="bottom"><b>rtnl_neightbl_set_gc_tresh2</b> (struct rtnl_neightbl *ntbl, int thresh)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gab3d4d94e2832721b64b013e3beb1ff8f"></a><!-- doxytag: member="neightbl::rtnl_neightbl_set_gc_tresh3" ref="gab3d4d94e2832721b64b013e3beb1ff8f" args="(struct rtnl_neightbl *ntbl, int thresh)" --> void </td><td class="memItemRight" valign="bottom"><b>rtnl_neightbl_set_gc_tresh3</b> (struct rtnl_neightbl *ntbl, int thresh)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gad770c7dfa772449c10713eb18536564b"></a><!-- doxytag: member="neightbl::rtnl_neightbl_set_name" ref="gad770c7dfa772449c10713eb18536564b" args="(struct rtnl_neightbl *ntbl, const char *name)" --> void </td><td class="memItemRight" valign="bottom"><b>rtnl_neightbl_set_name</b> (struct rtnl_neightbl *ntbl, const char *name)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaa77b6eb4858c53085ad5492bf0d1bd89"></a><!-- doxytag: member="neightbl::rtnl_neightbl_set_dev" ref="gaa77b6eb4858c53085ad5492bf0d1bd89" args="(struct rtnl_neightbl *ntbl, int ifindex)" --> void </td><td class="memItemRight" valign="bottom"><b>rtnl_neightbl_set_dev</b> (struct rtnl_neightbl *ntbl, int ifindex)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__neightbl.html#ga8f5fbf01676ef312c8130a9956348cba">rtnl_neightbl_set_queue_len</a> (struct rtnl_neightbl *ntbl, int len)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set the queue length for pending requests of a neighbour table to the specified value. <a href="#ga8f5fbf01676ef312c8130a9956348cba"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__neightbl.html#gaf47e478c8a4fdf06b2307078ec6559b9">rtnl_neightbl_set_proxy_queue_len</a> (struct rtnl_neightbl *ntbl, int len)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set the queue length for delay proxy arp requests of a neighbour table to the specified value. <a href="#gaf47e478c8a4fdf06b2307078ec6559b9"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__neightbl.html#gac750bac1477d2c5f2c2ee99a49c7e64f">rtnl_neightbl_set_app_probes</a> (struct rtnl_neightbl *ntbl, int probes)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set the number of application probes of a neighbour table to the specified value. <a href="#gac750bac1477d2c5f2c2ee99a49c7e64f"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__neightbl.html#gaff57cd86ac5ed303b1b63ffdcf6d0ed3">rtnl_neightbl_set_ucast_probes</a> (struct rtnl_neightbl *ntbl, int probes)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set the number of unicast probes of a neighbour table to the specified value. <a href="#gaff57cd86ac5ed303b1b63ffdcf6d0ed3"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__neightbl.html#gae97878201e820171588d9e1aa7cdea54">rtnl_neightbl_set_mcast_probes</a> (struct rtnl_neightbl *ntbl, int probes)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set the number of multicast probes of a neighbour table to the specified value. <a href="#gae97878201e820171588d9e1aa7cdea54"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__neightbl.html#gaf534b308022bdbc26fe92c1d55d5f2f8">rtnl_neightbl_set_base_reachable_time</a> (struct rtnl_neightbl *ntbl, uint64_t ms)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set the base reachable time of a neighbour table to the specified value. <a href="#gaf534b308022bdbc26fe92c1d55d5f2f8"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__neightbl.html#gae139d72ee7a88cbebab9dfc499bb5ab7">rtnl_neightbl_set_retrans_time</a> (struct rtnl_neightbl *ntbl, uint64_t ms)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set the retransmit time of a neighbour table to the specified value. <a href="#gae139d72ee7a88cbebab9dfc499bb5ab7"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__neightbl.html#ga8a48148cba02c8b01fb516d1f827f9e4">rtnl_neightbl_set_gc_stale_time</a> (struct rtnl_neightbl *ntbl, uint64_t ms)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set the gc stale time of a neighbour table to the specified value. <a href="#ga8a48148cba02c8b01fb516d1f827f9e4"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__neightbl.html#gae0ef5e8df270c4bf5eee2755de12b767">rtnl_neightbl_set_delay_probe_time</a> (struct rtnl_neightbl *ntbl, uint64_t ms)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set the first probe delay time of a neighbour table to the specified value. <a href="#gae0ef5e8df270c4bf5eee2755de12b767"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__neightbl.html#gad77b46c056bb0acac0c525ce345bd094">rtnl_neightbl_set_anycast_delay</a> (struct rtnl_neightbl *ntbl, uint64_t ms)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set the anycast delay of a neighbour table to the specified value. <a href="#gad77b46c056bb0acac0c525ce345bd094"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__neightbl.html#ga07a87bde9f4d7a66c95582b5b8408788">rtnl_neightbl_set_proxy_delay</a> (struct rtnl_neightbl *ntbl, uint64_t ms)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set the proxy delay of a neighbour table to the specified value. <a href="#ga07a87bde9f4d7a66c95582b5b8408788"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__neightbl.html#ga56ecb58a0a866d3eb245ca8b62dd5998">rtnl_neightbl_set_locktime</a> (struct rtnl_neightbl *ntbl, uint64_t ms)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set the locktime of a neighbour table to the specified value. <a href="#ga56ecb58a0a866d3eb245ca8b62dd5998"></a><br/></td></tr> </table> <hr/><h2>Function Documentation</h2> <a class="anchor" id="ga6796d6db2820370e36d35eca76603afd"></a><!-- doxytag: member="neightbl.c::rtnl_neightbl_alloc_cache" ref="ga6796d6db2820370e36d35eca76603afd" args="(struct nl_handle *handle)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">struct nl_cache* rtnl_neightbl_alloc_cache </td> <td>(</td> <td class="paramtype">struct nl_handle * </td> <td class="paramname"><em>handle</em></td><td>)</td> <td><code> [read]</code></td> </tr> </table> </div> <div class="memdoc"> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">handle</td><td>netlink handle</td></tr> </table> </dd> </dl> <p>Allocates a new neighbour table cache, initializes it properly and updates it to include all neighbour tables currently configured in the kernel.</p> <dl class="note"><dt><b>Note:</b></dt><dd>The caller is responsible for destroying and freeing the cache after using it. </dd></dl> <dl class="return"><dt><b>Returns:</b></dt><dd>The new cache or NULL if an error occured. </dd></dl> <p>Definition at line <a class="el" href="neightbl_8c_source.html#l00407">407</a> of file <a class="el" href="neightbl_8c_source.html">neightbl.c</a>.</p> <p>References <a class="el" href="cache_8c_source.html#l00173">nl_cache_alloc()</a>, <a class="el" href="cache_8c_source.html#l00265">nl_cache_free()</a>, and <a class="el" href="cache_8c_source.html#l00662">nl_cache_refill()</a>.</p> <div class="fragment"><pre class="fragment">{ <span class="keyword">struct </span>nl_cache * cache; cache = <a class="code" href="group__cache.html#ga9520ae0f2158db3c081f34c851d92252" title="Allocate an empty cache.">nl_cache_alloc</a>(&rtnl_neightbl_ops); <span class="keywordflow">if</span> (cache == NULL) <span class="keywordflow">return</span> NULL; <span class="keywordflow">if</span> (handle && <a class="code" href="group__cache.html#gaf5bd584017847e6ef69ec36739a6aaf0" title="(Re)fill a cache with the contents in the kernel.">nl_cache_refill</a>(handle, cache) < 0) { <a class="code" href="group__cache.html#ga530c896db26d72001d011114b1e6cfaa" title="Free a cache.">nl_cache_free</a>(cache); <span class="keywordflow">return</span> NULL; } <span class="keywordflow">return</span> cache; } </pre></div> </div> </div> <a class="anchor" id="ga2f5342210758be5287e40d685e0140a5"></a><!-- doxytag: member="neightbl.c::rtnl_neightbl_get" ref="ga2f5342210758be5287e40d685e0140a5" args="(struct nl_cache *cache, const char *name, int ifindex)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">struct rtnl_neightbl* rtnl_neightbl_get </td> <td>(</td> <td class="paramtype">struct nl_cache * </td> <td class="paramname"><em>cache</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>name</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>ifindex</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [read]</code></td> </tr> </table> </div> <div class="memdoc"> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">cache</td><td>neighbour table cache </td></tr> <tr><td class="paramname">name</td><td>name of table </td></tr> <tr><td class="paramname">ifindex</td><td>optional interface index</td></tr> </table> </dd> </dl> <p>Looks up the neighbour table matching the specified name and optionally the specified ifindex to retrieve device specific parameter sets.</p> <dl class="return"><dt><b>Returns:</b></dt><dd>ptr to neighbour table inside the cache or NULL if no match was found. </dd></dl> <p>Definition at line <a class="el" href="neightbl_8c_source.html#l00436">436</a> of file <a class="el" href="neightbl_8c_source.html">neightbl.c</a>.</p> <p>References <a class="el" href="object_8c_source.html#l00162">nl_object_get()</a>.</p> <div class="fragment"><pre class="fragment">{ <span class="keyword">struct </span>rtnl_neightbl *nt; <span class="keywordflow">if</span> (cache->c_ops != &rtnl_neightbl_ops) <span class="keywordflow">return</span> NULL; nl_list_for_each_entry(nt, &cache->c_items, ce_list) { <span class="keywordflow">if</span> (!strcasecmp(nt->nt_name, name) && ((!ifindex && !nt->nt_parms.ntp_ifindex) || (ifindex && ifindex == nt->nt_parms.ntp_ifindex))) { <a class="code" href="group__object.html#gabd5767ac47ec6f09d1ac643f44eb8bfd" title="Acquire a reference on a object.">nl_object_get</a>((<span class="keyword">struct</span> nl_object *) nt); <span class="keywordflow">return</span> nt; } } <span class="keywordflow">return</span> NULL; } </pre></div> </div> </div> <a class="anchor" id="gaaff1f5ae4004a152f4e659bb0ecc596f"></a><!-- doxytag: member="neightbl.c::rtnl_neightbl_build_change_request" ref="gaaff1f5ae4004a152f4e659bb0ecc596f" args="(struct rtnl_neightbl *old, struct rtnl_neightbl *tmpl)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">struct nl_msg* rtnl_neightbl_build_change_request </td> <td>(</td> <td class="paramtype">struct rtnl_neightbl * </td> <td class="paramname"><em>old</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct rtnl_neightbl * </td> <td class="paramname"><em>tmpl</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [read]</code></td> </tr> </table> </div> <div class="memdoc"> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">old</td><td>neighbour table to change </td></tr> <tr><td class="paramname">tmpl</td><td>template with requested changes</td></tr> </table> </dd> </dl> <p>Builds a new netlink message requesting a change of neighbour table attributes. The netlink message header isn't fully equipped with all relevant fields and must be sent out via <a class="el" href="group__nl.html#ga01a2aad82350f867e704d5c696438b60" title="Send netlink message and check & extend header values as needed.">nl_send_auto_complete()</a> or supplemented as needed. <em>old</em> must point to a neighbour table currently configured in the kernel and <em>tmpl</em> must contain the attributes to be changed set via <code>rtnl_neightbl_set_*</code> functions.</p> <dl class="return"><dt><b>Returns:</b></dt><dd>New netlink message </dd></dl> <p>Definition at line <a class="el" href="neightbl_8c_source.html#l00478">478</a> of file <a class="el" href="neightbl_8c_source.html">neightbl.c</a>.</p> <p>References <a class="el" href="attr_8c_source.html#l00536">nla_put_nested()</a>, <a class="el" href="attr_8c_source.html#l00592">nla_put_string()</a>, <a class="el" href="attr_8c_source.html#l00570">nla_put_u32()</a>, <a class="el" href="attr_8c_source.html#l00581">nla_put_u64()</a>, <a class="el" href="msg_8c_source.html#l00401">nlmsg_alloc()</a>, <a class="el" href="msg_8c_source.html#l00448">nlmsg_alloc_simple()</a>, <a class="el" href="msg_8c_source.html#l00549">nlmsg_append()</a>, and <a class="el" href="msg_8c_source.html#l00656">nlmsg_free()</a>.</p> <p>Referenced by <a class="el" href="neightbl_8c_source.html#l00578">rtnl_neightbl_change()</a>.</p> <div class="fragment"><pre class="fragment">{ <span class="keyword">struct </span>nl_msg *m; <span class="keyword">struct </span>ndtmsg ndt = { .ndtm_family = old->nt_family, }; m = <a class="code" href="group__msg.html#ga580d8697d19050c55060bc10ab4eae9f" title="Allocate a new netlink message.">nlmsg_alloc_simple</a>(RTM_SETNEIGHTBL, 0); <a class="code" href="group__msg.html#gacc5e5ade5675d041f86c7c8693f7088d" title="Append data to tail of a netlink message.">nlmsg_append</a>(m, &ndt, <span class="keyword">sizeof</span>(ndt), NLMSG_ALIGNTO); <a class="code" href="group__attr.html#gacf85c1c8becd42e29f03670553b6e2f3" title="Add a string netlink attribute to a netlink message.">nla_put_string</a>(m, NDTA_NAME, old->nt_name); <span class="keywordflow">if</span> (tmpl->ce_mask & NEIGHTBL_ATTR_THRESH1) <a class="code" href="group__attr.html#ga9891f766dcebe6bdb2ce86f021c6f6e6" title="Add a u32 netlink attribute to a netlink message.">nla_put_u32</a>(m, NDTA_THRESH1, tmpl->nt_gc_thresh1); <span class="keywordflow">if</span> (tmpl->ce_mask & NEIGHTBL_ATTR_THRESH2) <a class="code" href="group__attr.html#ga9891f766dcebe6bdb2ce86f021c6f6e6" title="Add a u32 netlink attribute to a netlink message.">nla_put_u32</a>(m, NDTA_THRESH2, tmpl->nt_gc_thresh2); <span class="keywordflow">if</span> (tmpl->ce_mask & NEIGHTBL_ATTR_THRESH2) <a class="code" href="group__attr.html#ga9891f766dcebe6bdb2ce86f021c6f6e6" title="Add a u32 netlink attribute to a netlink message.">nla_put_u32</a>(m, NDTA_THRESH2, tmpl->nt_gc_thresh2); <span class="keywordflow">if</span> (tmpl->ce_mask & NEIGHTBL_ATTR_GC_INTERVAL) <a class="code" href="group__attr.html#gade5cf81c340ddb0656842bb554f3cbfe" title="Add a u64 netlink attribute to a netlink message.">nla_put_u64</a>(m, NDTA_GC_INTERVAL, tmpl->nt_gc_interval); <span class="keywordflow">if</span> (tmpl->ce_mask & NEIGHTBL_ATTR_PARMS) { <span class="keyword">struct </span>rtnl_neightbl_parms *p = &tmpl->nt_parms; <span class="keyword">struct </span>nl_msg *parms = <a class="code" href="group__msg.html#ga89c936bdf5e73455bb1640a0eb8a020d" title="Allocate a new netlink message with the default maximum payload size.">nlmsg_alloc</a>(); <span class="keywordflow">if</span> (old->nt_parms.ntp_mask & NEIGHTBLPARM_ATTR_IFINDEX) <a class="code" href="group__attr.html#ga9891f766dcebe6bdb2ce86f021c6f6e6" title="Add a u32 netlink attribute to a netlink message.">nla_put_u32</a>(parms, NDTPA_IFINDEX, old->nt_parms.ntp_ifindex); <span class="keywordflow">if</span> (p->ntp_mask & NEIGHTBLPARM_ATTR_QUEUE_LEN) <a class="code" href="group__attr.html#ga9891f766dcebe6bdb2ce86f021c6f6e6" title="Add a u32 netlink attribute to a netlink message.">nla_put_u32</a>(parms, NDTPA_QUEUE_LEN, p->ntp_queue_len); <span class="keywordflow">if</span> (p->ntp_mask & NEIGHTBLPARM_ATTR_APP_PROBES) <a class="code" href="group__attr.html#ga9891f766dcebe6bdb2ce86f021c6f6e6" title="Add a u32 netlink attribute to a netlink message.">nla_put_u32</a>(parms, NDTPA_APP_PROBES, p->ntp_app_probes); <span class="keywordflow">if</span> (p->ntp_mask & NEIGHTBLPARM_ATTR_UCAST_PROBES) <a class="code" href="group__attr.html#ga9891f766dcebe6bdb2ce86f021c6f6e6" title="Add a u32 netlink attribute to a netlink message.">nla_put_u32</a>(parms, NDTPA_UCAST_PROBES, p->ntp_ucast_probes); <span class="keywordflow">if</span> (p->ntp_mask & NEIGHTBLPARM_ATTR_MCAST_PROBES) <a class="code" href="group__attr.html#ga9891f766dcebe6bdb2ce86f021c6f6e6" title="Add a u32 netlink attribute to a netlink message.">nla_put_u32</a>(parms, NDTPA_MCAST_PROBES, p->ntp_mcast_probes); <span class="keywordflow">if</span> (p->ntp_mask & NEIGHTBLPARM_ATTR_PROXY_QLEN) <a class="code" href="group__attr.html#ga9891f766dcebe6bdb2ce86f021c6f6e6" title="Add a u32 netlink attribute to a netlink message.">nla_put_u32</a>(parms, NDTPA_PROXY_QLEN, p->ntp_proxy_qlen); <span class="keywordflow">if</span> (p->ntp_mask & NEIGHTBLPARM_ATTR_BASE_REACHABLE_TIME) <a class="code" href="group__attr.html#gade5cf81c340ddb0656842bb554f3cbfe" title="Add a u64 netlink attribute to a netlink message.">nla_put_u64</a>(parms, NDTPA_BASE_REACHABLE_TIME, p->ntp_base_reachable_time); <span class="keywordflow">if</span> (p->ntp_mask & NEIGHTBLPARM_ATTR_RETRANS_TIME) <a class="code" href="group__attr.html#gade5cf81c340ddb0656842bb554f3cbfe" title="Add a u64 netlink attribute to a netlink message.">nla_put_u64</a>(parms, NDTPA_RETRANS_TIME, p->ntp_retrans_time); <span class="keywordflow">if</span> (p->ntp_mask & NEIGHTBLPARM_ATTR_GC_STALETIME) <a class="code" href="group__attr.html#gade5cf81c340ddb0656842bb554f3cbfe" title="Add a u64 netlink attribute to a netlink message.">nla_put_u64</a>(parms, NDTPA_GC_STALETIME, p->ntp_gc_stale_time); <span class="keywordflow">if</span> (p->ntp_mask & NEIGHTBLPARM_ATTR_DELAY_PROBE_TIME) <a class="code" href="group__attr.html#gade5cf81c340ddb0656842bb554f3cbfe" title="Add a u64 netlink attribute to a netlink message.">nla_put_u64</a>(parms, NDTPA_DELAY_PROBE_TIME, p->ntp_proxy_delay); <span class="keywordflow">if</span> (p->ntp_mask & NEIGHTBLPARM_ATTR_ANYCAST_DELAY) <a class="code" href="group__attr.html#gade5cf81c340ddb0656842bb554f3cbfe" title="Add a u64 netlink attribute to a netlink message.">nla_put_u64</a>(parms, NDTPA_ANYCAST_DELAY, p->ntp_anycast_delay); <span class="keywordflow">if</span> (p->ntp_mask & NEIGHTBLPARM_ATTR_PROXY_DELAY) <a class="code" href="group__attr.html#gade5cf81c340ddb0656842bb554f3cbfe" title="Add a u64 netlink attribute to a netlink message.">nla_put_u64</a>(parms, NDTPA_PROXY_DELAY, p->ntp_proxy_delay); <span class="keywordflow">if</span> (p->ntp_mask & NEIGHTBLPARM_ATTR_LOCKTIME) <a class="code" href="group__attr.html#gade5cf81c340ddb0656842bb554f3cbfe" title="Add a u64 netlink attribute to a netlink message.">nla_put_u64</a>(parms, NDTPA_LOCKTIME, p->ntp_locktime); <a class="code" href="group__attr.html#gafe7bad603c92ecee0dfc0cc112dd1182" title="Add a nested netlink attribute to a netlink message.">nla_put_nested</a>(m, NDTA_PARMS, parms); <a class="code" href="group__msg.html#ga138ba9bee70553f9fbe7143deacad48c" title="Free a netlink message.">nlmsg_free</a>(parms); } <span class="keywordflow">return</span> m; } </pre></div> </div> </div> <a class="anchor" id="ga3740cdf50ee42c3f5ab4db67dd8a877e"></a><!-- doxytag: member="neightbl.c::rtnl_neightbl_change" ref="ga3740cdf50ee42c3f5ab4db67dd8a877e" args="(struct nl_handle *handle, struct rtnl_neightbl *old, struct rtnl_neightbl *tmpl)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int rtnl_neightbl_change </td> <td>(</td> <td class="paramtype">struct nl_handle * </td> <td class="paramname"><em>handle</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct rtnl_neightbl * </td> <td class="paramname"><em>old</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct rtnl_neightbl * </td> <td class="paramname"><em>tmpl</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">handle</td><td>netlink handle </td></tr> <tr><td class="paramname">old</td><td>neighbour table to be changed </td></tr> <tr><td class="paramname">tmpl</td><td>template with requested changes</td></tr> </table> </dd> </dl> <p>Builds a new netlink message by calling <a class="el" href="group__neightbl.html#gaaff1f5ae4004a152f4e659bb0ecc596f" title="Builds a netlink change request message to change neighbour table attributes.">rtnl_neightbl_build_change_request()</a>, sends the request to the kernel and waits for the next ACK to be received, i.e. blocks until the request has been processed.</p> <dl class="return"><dt><b>Returns:</b></dt><dd>0 on success or a negative error code </dd></dl> <p>Definition at line <a class="el" href="neightbl_8c_source.html#l00578">578</a> of file <a class="el" href="neightbl_8c_source.html">neightbl.c</a>.</p> <p>References <a class="el" href="nl_8c_source.html#l00373">nl_send_auto_complete()</a>, <a class="el" href="nl_8c_source.html#l00800">nl_wait_for_ack()</a>, <a class="el" href="msg_8c_source.html#l00656">nlmsg_free()</a>, and <a class="el" href="neightbl_8c_source.html#l00478">rtnl_neightbl_build_change_request()</a>.</p> <div class="fragment"><pre class="fragment">{ <span class="keywordtype">int</span> err; <span class="keyword">struct </span>nl_msg *msg; msg = <a class="code" href="group__neightbl.html#gaaff1f5ae4004a152f4e659bb0ecc596f" title="Builds a netlink change request message to change neighbour table attributes.">rtnl_neightbl_build_change_request</a>(old, tmpl); err = <a class="code" href="group__nl.html#ga01a2aad82350f867e704d5c696438b60" title="Send netlink message and check &amp; extend header values as needed.">nl_send_auto_complete</a>(handle, msg); <span class="keywordflow">if</span> (err < 0) <span class="keywordflow">return</span> err; <a class="code" href="group__msg.html#ga138ba9bee70553f9fbe7143deacad48c" title="Free a netlink message.">nlmsg_free</a>(msg); <span class="keywordflow">return</span> <a class="code" href="group__nl.html#gaa65fec588e0a0a2de1881fb8366ccd79" title="Wait for ACK.">nl_wait_for_ack</a>(handle); } </pre></div> </div> </div> <a class="anchor" id="ga8f5fbf01676ef312c8130a9956348cba"></a><!-- doxytag: member="neightbl.c::rtnl_neightbl_set_queue_len" ref="ga8f5fbf01676ef312c8130a9956348cba" args="(struct rtnl_neightbl *ntbl, int len)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void rtnl_neightbl_set_queue_len </td> <td>(</td> <td class="paramtype">struct rtnl_neightbl * </td> <td class="paramname"><em>ntbl</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>len</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">ntbl</td><td>neighbour table to change </td></tr> <tr><td class="paramname">len</td><td>new queue len </td></tr> </table> </dd> </dl> <p>Definition at line <a class="el" href="neightbl_8c_source.html#l00648">648</a> of file <a class="el" href="neightbl_8c_source.html">neightbl.c</a>.</p> <div class="fragment"><pre class="fragment">{ ntbl->nt_parms.ntp_queue_len = len; ntbl->nt_parms.ntp_mask |= NEIGHTBLPARM_ATTR_QUEUE_LEN; ntbl->ce_mask |= NEIGHTBL_ATTR_PARMS; } </pre></div> </div> </div> <a class="anchor" id="gaf47e478c8a4fdf06b2307078ec6559b9"></a><!-- doxytag: member="neightbl.c::rtnl_neightbl_set_proxy_queue_len" ref="gaf47e478c8a4fdf06b2307078ec6559b9" args="(struct rtnl_neightbl *ntbl, int len)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void rtnl_neightbl_set_proxy_queue_len </td> <td>(</td> <td class="paramtype">struct rtnl_neightbl * </td> <td class="paramname"><em>ntbl</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>len</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">ntbl</td><td>neighbour table to change </td></tr> <tr><td class="paramname">len</td><td>new queue len </td></tr> </table> </dd> </dl> <p>Definition at line <a class="el" href="neightbl_8c_source.html#l00660">660</a> of file <a class="el" href="neightbl_8c_source.html">neightbl.c</a>.</p> <div class="fragment"><pre class="fragment">{ ntbl->nt_parms.ntp_proxy_qlen = len; ntbl->nt_parms.ntp_mask |= NEIGHTBLPARM_ATTR_PROXY_QLEN; ntbl->ce_mask |= NEIGHTBL_ATTR_PARMS; } </pre></div> </div> </div> <a class="anchor" id="gac750bac1477d2c5f2c2ee99a49c7e64f"></a><!-- doxytag: member="neightbl.c::rtnl_neightbl_set_app_probes" ref="gac750bac1477d2c5f2c2ee99a49c7e64f" args="(struct rtnl_neightbl *ntbl, int probes)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void rtnl_neightbl_set_app_probes </td> <td>(</td> <td class="paramtype">struct rtnl_neightbl * </td> <td class="paramname"><em>ntbl</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>probes</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">ntbl</td><td>neighbour table to change </td></tr> <tr><td class="paramname">probes</td><td>new probes value </td></tr> </table> </dd> </dl> <p>Definition at line <a class="el" href="neightbl_8c_source.html#l00672">672</a> of file <a class="el" href="neightbl_8c_source.html">neightbl.c</a>.</p> <div class="fragment"><pre class="fragment">{ ntbl->nt_parms.ntp_app_probes = probes; ntbl->nt_parms.ntp_mask |= NEIGHTBLPARM_ATTR_APP_PROBES; ntbl->ce_mask |= NEIGHTBL_ATTR_PARMS; } </pre></div> </div> </div> <a class="anchor" id="gaff57cd86ac5ed303b1b63ffdcf6d0ed3"></a><!-- doxytag: member="neightbl.c::rtnl_neightbl_set_ucast_probes" ref="gaff57cd86ac5ed303b1b63ffdcf6d0ed3" args="(struct rtnl_neightbl *ntbl, int probes)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void rtnl_neightbl_set_ucast_probes </td> <td>(</td> <td class="paramtype">struct rtnl_neightbl * </td> <td class="paramname"><em>ntbl</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>probes</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">ntbl</td><td>neighbour table to change </td></tr> <tr><td class="paramname">probes</td><td>new probes value </td></tr> </table> </dd> </dl> <p>Definition at line <a class="el" href="neightbl_8c_source.html#l00684">684</a> of file <a class="el" href="neightbl_8c_source.html">neightbl.c</a>.</p> <div class="fragment"><pre class="fragment">{ ntbl->nt_parms.ntp_ucast_probes = probes; ntbl->nt_parms.ntp_mask |= NEIGHTBLPARM_ATTR_UCAST_PROBES; ntbl->ce_mask |= NEIGHTBL_ATTR_PARMS; } </pre></div> </div> </div> <a class="anchor" id="gae97878201e820171588d9e1aa7cdea54"></a><!-- doxytag: member="neightbl.c::rtnl_neightbl_set_mcast_probes" ref="gae97878201e820171588d9e1aa7cdea54" args="(struct rtnl_neightbl *ntbl, int probes)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void rtnl_neightbl_set_mcast_probes </td> <td>(</td> <td class="paramtype">struct rtnl_neightbl * </td> <td class="paramname"><em>ntbl</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>probes</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">ntbl</td><td>neighbour table to change </td></tr> <tr><td class="paramname">probes</td><td>new probes value </td></tr> </table> </dd> </dl> <p>Definition at line <a class="el" href="neightbl_8c_source.html#l00696">696</a> of file <a class="el" href="neightbl_8c_source.html">neightbl.c</a>.</p> <div class="fragment"><pre class="fragment">{ ntbl->nt_parms.ntp_mcast_probes = probes; ntbl->nt_parms.ntp_mask |= NEIGHTBLPARM_ATTR_MCAST_PROBES; ntbl->ce_mask |= NEIGHTBL_ATTR_PARMS; } </pre></div> </div> </div> <a class="anchor" id="gaf534b308022bdbc26fe92c1d55d5f2f8"></a><!-- doxytag: member="neightbl.c::rtnl_neightbl_set_base_reachable_time" ref="gaf534b308022bdbc26fe92c1d55d5f2f8" args="(struct rtnl_neightbl *ntbl, uint64_t ms)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void rtnl_neightbl_set_base_reachable_time </td> <td>(</td> <td class="paramtype">struct rtnl_neightbl * </td> <td class="paramname"><em>ntbl</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">uint64_t </td> <td class="paramname"><em>ms</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">ntbl</td><td>neighbour table to change </td></tr> <tr><td class="paramname">ms</td><td>new base reachable time in milliseconds </td></tr> </table> </dd> </dl> <p>Definition at line <a class="el" href="neightbl_8c_source.html#l00708">708</a> of file <a class="el" href="neightbl_8c_source.html">neightbl.c</a>.</p> <div class="fragment"><pre class="fragment">{ ntbl->nt_parms.ntp_base_reachable_time = ms; ntbl->nt_parms.ntp_mask |= NEIGHTBLPARM_ATTR_BASE_REACHABLE_TIME; ntbl->ce_mask |= NEIGHTBL_ATTR_PARMS; } </pre></div> </div> </div> <a class="anchor" id="gae139d72ee7a88cbebab9dfc499bb5ab7"></a><!-- doxytag: member="neightbl.c::rtnl_neightbl_set_retrans_time" ref="gae139d72ee7a88cbebab9dfc499bb5ab7" args="(struct rtnl_neightbl *ntbl, uint64_t ms)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void rtnl_neightbl_set_retrans_time </td> <td>(</td> <td class="paramtype">struct rtnl_neightbl * </td> <td class="paramname"><em>ntbl</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">uint64_t </td> <td class="paramname"><em>ms</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">ntbl</td><td>neighbour table to change </td></tr> <tr><td class="paramname">ms</td><td>new retransmit time </td></tr> </table> </dd> </dl> <p>Definition at line <a class="el" href="neightbl_8c_source.html#l00721">721</a> of file <a class="el" href="neightbl_8c_source.html">neightbl.c</a>.</p> <div class="fragment"><pre class="fragment">{ ntbl->nt_parms.ntp_retrans_time = ms; ntbl->nt_parms.ntp_mask |= NEIGHTBLPARM_ATTR_RETRANS_TIME; ntbl->ce_mask |= NEIGHTBL_ATTR_PARMS; } </pre></div> </div> </div> <a class="anchor" id="ga8a48148cba02c8b01fb516d1f827f9e4"></a><!-- doxytag: member="neightbl.c::rtnl_neightbl_set_gc_stale_time" ref="ga8a48148cba02c8b01fb516d1f827f9e4" args="(struct rtnl_neightbl *ntbl, uint64_t ms)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void rtnl_neightbl_set_gc_stale_time </td> <td>(</td> <td class="paramtype">struct rtnl_neightbl * </td> <td class="paramname"><em>ntbl</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">uint64_t </td> <td class="paramname"><em>ms</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">ntbl</td><td>neighbour table to change </td></tr> <tr><td class="paramname">ms</td><td>new gc stale time in milliseconds </td></tr> </table> </dd> </dl> <p>Definition at line <a class="el" href="neightbl_8c_source.html#l00733">733</a> of file <a class="el" href="neightbl_8c_source.html">neightbl.c</a>.</p> <div class="fragment"><pre class="fragment">{ ntbl->nt_parms.ntp_gc_stale_time = ms; ntbl->nt_parms.ntp_mask |= NEIGHTBLPARM_ATTR_GC_STALETIME; ntbl->ce_mask |= NEIGHTBL_ATTR_PARMS; } </pre></div> </div> </div> <a class="anchor" id="gae0ef5e8df270c4bf5eee2755de12b767"></a><!-- doxytag: member="neightbl.c::rtnl_neightbl_set_delay_probe_time" ref="gae0ef5e8df270c4bf5eee2755de12b767" args="(struct rtnl_neightbl *ntbl, uint64_t ms)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void rtnl_neightbl_set_delay_probe_time </td> <td>(</td> <td class="paramtype">struct rtnl_neightbl * </td> <td class="paramname"><em>ntbl</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">uint64_t </td> <td class="paramname"><em>ms</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">ntbl</td><td>neighbour table to change </td></tr> <tr><td class="paramname">ms</td><td>new first probe delay time in milliseconds </td></tr> </table> </dd> </dl> <p>Definition at line <a class="el" href="neightbl_8c_source.html#l00745">745</a> of file <a class="el" href="neightbl_8c_source.html">neightbl.c</a>.</p> <div class="fragment"><pre class="fragment">{ ntbl->nt_parms.ntp_probe_delay = ms; ntbl->nt_parms.ntp_mask |= NEIGHTBLPARM_ATTR_DELAY_PROBE_TIME; ntbl->ce_mask |= NEIGHTBL_ATTR_PARMS; } </pre></div> </div> </div> <a class="anchor" id="gad77b46c056bb0acac0c525ce345bd094"></a><!-- doxytag: member="neightbl.c::rtnl_neightbl_set_anycast_delay" ref="gad77b46c056bb0acac0c525ce345bd094" args="(struct rtnl_neightbl *ntbl, uint64_t ms)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void rtnl_neightbl_set_anycast_delay </td> <td>(</td> <td class="paramtype">struct rtnl_neightbl * </td> <td class="paramname"><em>ntbl</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">uint64_t </td> <td class="paramname"><em>ms</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">ntbl</td><td>neighbour table to change </td></tr> <tr><td class="paramname">ms</td><td>new anycast delay in milliseconds </td></tr> </table> </dd> </dl> <p>Definition at line <a class="el" href="neightbl_8c_source.html#l00757">757</a> of file <a class="el" href="neightbl_8c_source.html">neightbl.c</a>.</p> <div class="fragment"><pre class="fragment">{ ntbl->nt_parms.ntp_anycast_delay = ms; ntbl->nt_parms.ntp_mask |= NEIGHTBLPARM_ATTR_ANYCAST_DELAY; ntbl->ce_mask |= NEIGHTBL_ATTR_PARMS; } </pre></div> </div> </div> <a class="anchor" id="ga07a87bde9f4d7a66c95582b5b8408788"></a><!-- doxytag: member="neightbl.c::rtnl_neightbl_set_proxy_delay" ref="ga07a87bde9f4d7a66c95582b5b8408788" args="(struct rtnl_neightbl *ntbl, uint64_t ms)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void rtnl_neightbl_set_proxy_delay </td> <td>(</td> <td class="paramtype">struct rtnl_neightbl * </td> <td class="paramname"><em>ntbl</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">uint64_t </td> <td class="paramname"><em>ms</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">ntbl</td><td>neighbour table to change </td></tr> <tr><td class="paramname">ms</td><td>new proxy delay in milliseconds </td></tr> </table> </dd> </dl> <p>Definition at line <a class="el" href="neightbl_8c_source.html#l00769">769</a> of file <a class="el" href="neightbl_8c_source.html">neightbl.c</a>.</p> <div class="fragment"><pre class="fragment">{ ntbl->nt_parms.ntp_proxy_delay = ms; ntbl->nt_parms.ntp_mask |= NEIGHTBLPARM_ATTR_PROXY_DELAY; ntbl->ce_mask |= NEIGHTBL_ATTR_PARMS; } </pre></div> </div> </div> <a class="anchor" id="ga56ecb58a0a866d3eb245ca8b62dd5998"></a><!-- doxytag: member="neightbl.c::rtnl_neightbl_set_locktime" ref="ga56ecb58a0a866d3eb245ca8b62dd5998" args="(struct rtnl_neightbl *ntbl, uint64_t ms)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void rtnl_neightbl_set_locktime </td> <td>(</td> <td class="paramtype">struct rtnl_neightbl * </td> <td class="paramname"><em>ntbl</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">uint64_t </td> <td class="paramname"><em>ms</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">ntbl</td><td>neighbour table to change </td></tr> <tr><td class="paramname">ms</td><td>new locktime in milliseconds </td></tr> </table> </dd> </dl> <p>Definition at line <a class="el" href="neightbl_8c_source.html#l00781">781</a> of file <a class="el" href="neightbl_8c_source.html">neightbl.c</a>.</p> <div class="fragment"><pre class="fragment">{ ntbl->nt_parms.ntp_locktime = ms; ntbl->nt_parms.ntp_mask |= NEIGHTBLPARM_ATTR_LOCKTIME; ntbl->ce_mask |= NEIGHTBL_ATTR_PARMS; } </pre></div> </div> </div> </div> <hr class="footer"/><address class="footer"><small>Generated on Mon Mar 21 2011 for libnl by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.3 </small></address> </body> </html>