netsukuku/d5/d05/andna_8h_source.html

466 lines
79 KiB
HTML
Raw Normal View History

<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>The Netsukuku Project: src/andna.h Source File</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">The Netsukuku Project
&#160;<span id="projectnumber">0.0.9</span>
</div>
<div id="projectbrief">An Alternative routing method</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="../../files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</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><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('d5/d05/andna_8h_source.html','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">andna.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../d5/d05/andna_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/* This file is part of Netsukuku</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * (c) Copyright 2005 Andrea Lo Pumo aka AlpT &lt;alpt@freaknet.org&gt;</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * This source code is free software; you can redistribute it and/or</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * modify it under the terms of the GNU General Public License as published </span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * by the Free Software Foundation; either version 2 of the License,</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * or (at your option) any later version.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * This source code is distributed in the hope that it will be useful,</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * Please refer to the GNU Public License for more details.</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * You should have received a copy of the GNU Public License along with</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * this source code; if not, write to:</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#ifndef ANDNA_H</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#define ANDNA_H</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d7/d74/andna__cache_8h.html">andna_cache.h</a>&quot;</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d5/d89/pkts_8h.html">pkts.h</a>&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div>
<div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="../../d5/d05/andna_8h.html#a7a7eb86e2b444f126c27bc89baa9e7a6"> 25</a></span>&#160;<span class="preprocessor">#define MY_NAMESERV &quot;nameserver 127.0.0.1&quot;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="../../d5/d05/andna_8h.html#a0d57d966840ae778f2c4e2dde10afce7"> 26</a></span>&#160;<span class="preprocessor">#define MY_NAMESERV_IPV6 &quot;nameserver ::1&quot;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="../../d5/d05/andna_8h.html#a6b55d1ce4563f5ae515dc1c38b489255"> 27</a></span>&#160;<span class="preprocessor">#define ETC_RESOLV_CONF &quot;/etc/resolv.conf&quot;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="../../d5/d05/andna_8h.html#a210c8eee016a988172ea7cff085b12d7"> 28</a></span>&#160;<span class="preprocessor">#define ETC_RESOLV_CONF_BAK &quot;/etc/resolv.conf.bak&quot;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment">/* How many different andna pkt can be flooded simultaneusly */</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="../../d5/d05/andna_8h.html#a0aacae26e8f0b774dfa62cfd6c09353f"> 31</a></span>&#160;<span class="preprocessor">#define ANDNA_MAX_FLOODS (ANDNA_MAX_QUEUE*3+1) </span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment">/* How many new hash_gnodes are supported in the andna hash_gnode mutation */</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="../../d5/d05/andna_8h.html#ab010b61523eac0164c5697290ff76938"> 34</a></span>&#160;<span class="preprocessor">#define ANDNA_MAX_NEW_GNODES 1024</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment">/* </span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> * These arrays keeps the latest reg_pkt and counter_check IDs to drop pkts</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> * alreay received during the floods. These arrays are a FIFO, so the</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"> * last pkt_id will be always at the 0 position, while the first one will be</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> * at the last position </span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="../../d5/d05/andna_8h.html#aeaaeca3362f81ce39485cac164c774db"> 42</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d5/d05/andna_8h.html#aeaaeca3362f81ce39485cac164c774db">last_reg_pkt_id</a>[<a class="code" href="../../d5/d05/andna_8h.html#a0aacae26e8f0b774dfa62cfd6c09353f">ANDNA_MAX_FLOODS</a>];</div>
<div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="../../d5/d05/andna_8h.html#aa6bdf623adc2d41d1fffb016dd60b84f"> 43</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d5/d05/andna_8h.html#aa6bdf623adc2d41d1fffb016dd60b84f">last_counter_pkt_id</a>[<a class="code" href="../../d5/d05/andna_8h.html#a0aacae26e8f0b774dfa62cfd6c09353f">ANDNA_MAX_FLOODS</a>];</div>
<div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="../../d5/d05/andna_8h.html#a03fa307fe55aecd8ff89a4c07b07ac87"> 44</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d5/d05/andna_8h.html#a03fa307fe55aecd8ff89a4c07b07ac87">last_spread_acache_pkt_id</a>[<a class="code" href="../../d5/d05/andna_8h.html#a0aacae26e8f0b774dfa62cfd6c09353f">ANDNA_MAX_FLOODS</a>];</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment">/*\</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"> * *** ANDNA hash notes ***</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> * </span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"> * In ANDNA there are three type of hashes: MD5, 32bit, 32bit hash of a MD5</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"> * hash. These hashes are generally applied on hostnames.</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"> * The andna_hash() function, defined in andna.c, is used to calculate </span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"> * the IP of a hash_node/hash_gnode/counter_node. It makes a MD5 digest of the</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"> * input data. If we are working on ipv4, then a 32bit hash is applied to the</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment"> * previously calculated MD5 digest. The result is the IP of the hash_gnode.</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment"> * If we are in ipv6, we&#39;ll use directly the MD5 digest as the hash_gnode IP.</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment"> * In all the other cases we&#39;ll use directly the MD5 hash of the hostname,</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment"> * f.e. the hname hash of the registration and resolution packets is a MD5.</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment"> * The only exceptions are the lcl_cache and the rh_cache, which use</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment"> * internally a 32bit hash to speed up the hname lookups.</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment"> * </span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="comment"> * The general guideline for new implementation is to always use big hashes</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="comment"> * (i.e. MD5) where we might get collisions (f.e in an andna_cache), and to</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment"> * use small hashes where we are safe (f.e. in the rhc_cache).</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment">\*/</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment">/*\</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"> * * * * ANDNA requests/replies pkt stuff * * * </span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment">\*/</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div>
<div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="../../d5/d05/andna_8h.html#aaa0b80351686c25d3754a424fdaa12b5"> 76</a></span>&#160;<span class="preprocessor">#define ANDNA_HOOK_TIMEOUT 8 </span><span class="comment">/* seconds */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="../../d5/d05/andna_8h.html#a0d615c6d1f3d65f6030690d969cd5d39"> 77</a></span>&#160;<span class="preprocessor">#define ANDNA_REV_RESOLVE_RQ_TIMEOUT 60</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment">/* * * andna pkt flags * * */</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="../../d5/d05/andna_8h.html#af75f45b165c8d1ebe2c6e26ef788a0f5"> 80</a></span>&#160;<span class="preprocessor">#define ANDNA_PKT_UPDATE 1 </span><span class="comment">/* Update the hostname */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="../../d5/d05/andna_8h.html#a656bf9a1dafc22f757a8ed4b5dfc2b74"> 81</a></span>&#160;<span class="preprocessor">#define ANDNA_PKT_FORWARD (1&lt;&lt;1) </span><span class="comment">/* Forward this pkt, plz */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="../../d5/d05/andna_8h.html#ab7cc80252dde4e35e944561218fed314"> 82</a></span>&#160;<span class="preprocessor">#define ANDNA_PKT_REV_RESOLVE (1&lt;&lt;2) </span><span class="comment">/* Give me your hostnames */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="../../d5/d05/andna_8h.html#a8ec52fcbcafe18b4bc81401d38daab60"> 83</a></span>&#160;<span class="preprocessor">#define ANDNA_PKT_JUST_CHECK (1&lt;&lt;3) </span><span class="comment">/* Check only, don&#39;t update</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment"> anything */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="../../d5/d05/andna_8h.html#a6672ce2716a9050427d2e52e214b1ca4"> 85</a></span>&#160;<span class="preprocessor">#define ANDNA_PKT_SNSD_DEL (1&lt;&lt;4) </span><span class="comment">/* SNSD delete request */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment"> * andna_reg_pkt</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment"> * </span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment"> * Andna registration request pkt used to send the registration and update</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"> * requests to the hash_gnode, backup_gnode and counter_gnode.</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment"> * When the pkt is sent to a counter_gnode, a second `rip&#39;, which is the ip</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"> * of the hash_gnode who is contacting the counter_gnode, is appended at the</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment"> * end of the pkt.</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"> * When the packet is sent to a hash_gnode, at the end of the packet is </span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"> * included a packed snsd_service linked list. It is the list of snsd_records</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"> * that have to be registered. However the packet forwarded to the counter </span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"> * node won&#39;t keep this part.</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="../../d4/d9d/structandna__reg__pkt.html"> 101</a></span>&#160;<span class="keyword">struct </span><a class="code" href="../../d4/d9d/structandna__reg__pkt.html">andna_reg_pkt</a></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;{</div>
<div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="../../d4/d9d/structandna__reg__pkt.html#ac44350143f3b5b468220738a85881a9f"> 103</a></span>&#160; u_int <a class="code" href="../../d4/d9d/structandna__reg__pkt.html#ac44350143f3b5b468220738a85881a9f">rip</a>[<a class="code" href="../../d6/d4a/inet_8h.html#a70f8406c9556460a606bee45306c5630">MAX_IP_INT</a>]; <span class="comment">/* register_node ip */</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="../../d4/d9d/structandna__reg__pkt.html#a0dcb7da5ae9e620c4691fb4c10055003"> 104</a></span>&#160; u_int <a class="code" href="../../d4/d9d/structandna__reg__pkt.html#a0dcb7da5ae9e620c4691fb4c10055003">hash</a>[<a class="code" href="../../d6/d4a/inet_8h.html#a70f8406c9556460a606bee45306c5630">MAX_IP_INT</a>]; <span class="comment">/* md5 hash of the host name to</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="comment"> register. */</span></div>
<div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="../../d4/d9d/structandna__reg__pkt.html#a7e3d36f5c676c3af616bad2fd29f0ca6"> 106</a></span>&#160; <span class="keywordtype">char</span> <a class="code" href="../../d4/d9d/structandna__reg__pkt.html#a7e3d36f5c676c3af616bad2fd29f0ca6">pubkey</a>[<a class="code" href="../../d7/d74/andna__cache_8h.html#a8c597b42f177efc44b30898859f26d39">ANDNA_PKEY_LEN</a>]; <span class="comment">/* public key of the register</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="comment"> node. */</span></div>
<div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="../../d4/d9d/structandna__reg__pkt.html#a3998bf0220e08792666ab2caa6aa80b2"> 108</a></span>&#160; u_short <a class="code" href="../../d4/d9d/structandna__reg__pkt.html#a3998bf0220e08792666ab2caa6aa80b2">hname_updates</a>; <span class="comment">/* number of updates already </span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment"> made for the hostname */</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; </div>
<div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="../../d4/d9d/structandna__reg__pkt.html#ac4c5b5e313cfdf813de44bd36f627728"> 111</a></span>&#160; <span class="keywordtype">char</span> <a class="code" href="../../d4/d9d/structandna__reg__pkt.html#ac4c5b5e313cfdf813de44bd36f627728">sign</a>[<a class="code" href="../../d7/d74/andna__cache_8h.html#a34fa864991b3bfa0579a3f45bb590563">ANDNA_SIGNATURE_LEN</a>]; <span class="comment">/* RSA signature of the </span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="comment"> entire pkt (excluding </span></div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="comment"> `sign&#39; itself and `flags&#39;</span></div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="../../d4/d9d/structandna__reg__pkt.html#afb4d58e3e5b2c96fcabb66698660bbd2"> 115</a></span>&#160; <span class="keywordtype">char</span> <a class="code" href="../../d4/d9d/structandna__reg__pkt.html#afb4d58e3e5b2c96fcabb66698660bbd2">flags</a>;</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; </div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;} <a class="code" href="../../d5/d05/andna_8h.html#a4c52ad8b19c7abe19131ffa3ebebe747">_PACKED_</a>;</div>
<div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="../../d5/d05/andna_8h.html#ab93f88f5ae7fd8d1bd58063e5973f14d"> 118</a></span>&#160;<span class="preprocessor">#define ANDNA_REG_PKT_SZ (sizeof(struct andna_reg_pkt))</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="../../d5/d05/andna_8h.html#a9f146318f7f4f2b2cbefbb994d1b594e"> 119</a></span>&#160;<span class="preprocessor">#define ANDNA_REG_SIGNED_BLOCK_SZ (ANDNA_REG_PKT_SZ - ANDNA_SIGNATURE_LEN - \</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="preprocessor"> sizeof(char))</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="../../d5/d05/andna_8h.html#a286dc3ea5963039c1e7e3972c187e282"> 121</a></span>&#160;<a class="code" href="../../dc/d3e/endianness_8h.html#a3e44b8503d7a90af675c81800fe6d275">INT_INFO</a> <a class="code" href="../../d5/d05/andna_8h.html#a286dc3ea5963039c1e7e3972c187e282">andna_reg_pkt_iinfo</a> = { 1, <span class="comment">/* `rip&#39; and `hash&#39; aren&#39;t considered */</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; { <a class="code" href="../../dc/d3e/endianness_8h.html#a66b75e81c28419f622f82e631e5da9bc">INT_TYPE_16BIT</a> },</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; { <a class="code" href="../../d6/d4a/inet_8h.html#a58d45ce77dd4360314b4fd8ca70d9fb8">MAX_IP_SZ</a>*2 + <a class="code" href="../../d7/d74/andna__cache_8h.html#a8c597b42f177efc44b30898859f26d39">ANDNA_PKEY_LEN</a> },</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; { 1 },</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; };</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; </div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="comment"> * andna_resolve_rq_pkt</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="comment"> * The andna resolve request pkt is used to resolve hostnames, IPs and MX</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment"> * hostnames.</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="../../d0/d3f/structandna__resolve__rq__pkt.html"> 134</a></span>&#160;<span class="keyword">struct </span><a class="code" href="../../d0/d3f/structandna__resolve__rq__pkt.html">andna_resolve_rq_pkt</a></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;{</div>
<div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="../../d0/d3f/structandna__resolve__rq__pkt.html#abb28ba84165824d3df4bcd3030846604"> 136</a></span>&#160; u_int <a class="code" href="../../d0/d3f/structandna__resolve__rq__pkt.html#abb28ba84165824d3df4bcd3030846604">rip</a>[<a class="code" href="../../d6/d4a/inet_8h.html#a70f8406c9556460a606bee45306c5630">MAX_IP_INT</a>]; <span class="comment">/* the ip of the requester node */</span></div>
<div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="../../d0/d3f/structandna__resolve__rq__pkt.html#abe66dcaf94b35021d243fa136421543f"> 137</a></span>&#160; <span class="keywordtype">char</span> <a class="code" href="../../d0/d3f/structandna__resolve__rq__pkt.html#abe66dcaf94b35021d243fa136421543f">flags</a>;</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; </div>
<div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="../../d0/d3f/structandna__resolve__rq__pkt.html#a56110eb97e0054f5f1a741164f63f1aa"> 139</a></span>&#160; u_int <a class="code" href="../../d0/d3f/structandna__resolve__rq__pkt.html#a56110eb97e0054f5f1a741164f63f1aa">hash</a>[<a class="code" href="../../d6/d4a/inet_8h.html#a70f8406c9556460a606bee45306c5630">MAX_IP_INT</a>]; <span class="comment">/* md5 hash of the hostname to</span></div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="comment"> resolve. */</span></div>
<div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="../../d0/d3f/structandna__resolve__rq__pkt.html#a30a645fb9a6de4b8b2b793196fe78c6f"> 141</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="../../d0/d3f/structandna__resolve__rq__pkt.html#a30a645fb9a6de4b8b2b793196fe78c6f">service</a>; <span class="comment">/* the snsd service of the hname */</span></div>
<div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="../../d0/d3f/structandna__resolve__rq__pkt.html#a55df951f35ad31dce41da5418dec327f"> 142</a></span>&#160; u_char <a class="code" href="../../d0/d3f/structandna__resolve__rq__pkt.html#a55df951f35ad31dce41da5418dec327f">proto</a>; <span class="comment">/* the protocol of `service&#39; */</span></div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;} <a class="code" href="../../d5/d05/andna_8h.html#a4c52ad8b19c7abe19131ffa3ebebe747">_PACKED_</a>;</div>
<div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="../../d5/d05/andna_8h.html#a566826dae2037668b5578526015c92be"> 144</a></span>&#160;<span class="preprocessor">#define ANDNA_RESOLVE_RQ_PKT_SZ (sizeof(struct andna_resolve_rq_pkt))</span></div>
<div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="../../d5/d05/andna_8h.html#a4587480bcd2d4f84198c21436f33b3d4"> 145</a></span>&#160;<a class="code" href="../../dc/d3e/endianness_8h.html#a3e44b8503d7a90af675c81800fe6d275">INT_INFO</a> <a class="code" href="../../d5/d05/andna_8h.html#a4587480bcd2d4f84198c21436f33b3d4">andna_resolve_rq_pkt_iinfo</a> = { 1, <span class="comment">/* `rip&#39; and `hash&#39; are ignored */</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; { <a class="code" href="../../dc/d3e/endianness_8h.html#acc663d0291dd4a32c1dfbed3167bd58b">INT_TYPE_32BIT</a> },</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; { <a class="code" href="../../d6/d4a/inet_8h.html#a58d45ce77dd4360314b4fd8ca70d9fb8">MAX_IP_SZ</a>*2+<span class="keyword">sizeof</span>(char) },</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; { 1 },</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; };</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="comment">/* </span></div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="comment"> * The reply to the resolve request</span></div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="../../d3/dbb/structandna__resolve__reply__pkt.html"> 154</a></span>&#160;<span class="keyword">struct </span><a class="code" href="../../d3/dbb/structandna__resolve__reply__pkt.html">andna_resolve_reply_pkt</a></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;{</div>
<div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="../../d3/dbb/structandna__resolve__reply__pkt.html#ab6f592595f3b5c91ec69bdce4bd31452"> 156</a></span>&#160; uint32_t <a class="code" href="../../d3/dbb/structandna__resolve__reply__pkt.html#ab6f592595f3b5c91ec69bdce4bd31452">timestamp</a>; <span class="comment">/* the difference between the current</span></div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="comment"> time and the last time the resolved</span></div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="comment"> hname was updated */</span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="comment"> * the rest of the pkt is a pack of one snsd_service llist:</span></div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="comment"> * char service[SNSD_SERVICE_LLIST_PACK_SZ(service)];</span></div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;} <a class="code" href="../../d5/d05/andna_8h.html#a4c52ad8b19c7abe19131ffa3ebebe747">_PACKED_</a>;</div>
<div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="../../d5/d05/andna_8h.html#a073f38257acf9c2a0aaf8e3909b4fa69"> 164</a></span>&#160;<span class="preprocessor">#define ANDNA_RESOLVE_REPLY_PKT_SZ (sizeof(struct andna_resolve_reply_pkt))</span></div>
<div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="../../d5/d05/andna_8h.html#a29be91bbf9b07c3c95c6c5d72b1bf515"> 165</a></span>&#160;<a class="code" href="../../dc/d3e/endianness_8h.html#a3e44b8503d7a90af675c81800fe6d275">INT_INFO</a> <a class="code" href="../../d5/d05/andna_8h.html#a29be91bbf9b07c3c95c6c5d72b1bf515">andna_resolve_reply_pkt_iinfo</a> = { 1, <span class="comment">/* `ip&#39; is ignored */</span></div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; { <a class="code" href="../../dc/d3e/endianness_8h.html#acc663d0291dd4a32c1dfbed3167bd58b">INT_TYPE_32BIT</a> }, </div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; { 0 }, </div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; { 1 }</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; };</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="comment">/* </span></div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="comment"> * The reply to the reverse resolve request is just the packed local cache.</span></div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="comment">/* </span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="comment"> * single_acache</span></div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="comment"> * The single_acache pkt is used to get from an old hash_gnode a single</span></div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="comment"> * andna_cache, which has the wanted `hash&#39;. Its propagation method is similar</span></div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="comment"> * to that of andna_resolve_rq_pkt, but each new hash_gnode, which receives</span></div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="comment"> * the pkt, adds in the body pkt its ip. The added ips are used as excluded </span></div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="comment"> * hash_gnode by find_hash_gnode(). In this way each time an old hash_gnode </span></div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="comment"> * receives the pkt, can verify if it is, at that current time, the true old </span></div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="comment"> * hash_gnode by excluding the hash_gnodes listed in the pkt body. If it </span></div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;<span class="comment"> * notices that there&#39;s an hash_gnode older than it, it will append its ip in </span></div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="comment"> * the pkt body and will forward it to that older hash_gnode. And so on, until</span></div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="comment"> * the pkt reaches a true old hash_gnode, or cannot be forwarded anymore since</span></div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="comment"> * there are no more older hash_gnodes.</span></div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="../../dd/da3/structsingle__acache__hdr.html"> 192</a></span>&#160;<span class="keyword">struct </span><a class="code" href="../../dd/da3/structsingle__acache__hdr.html">single_acache_hdr</a></div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;{</div>
<div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="../../dd/da3/structsingle__acache__hdr.html#a7d1b9e3c057e684173868cde99f9f7a9"> 194</a></span>&#160; u_int <a class="code" href="../../dd/da3/structsingle__acache__hdr.html#a7d1b9e3c057e684173868cde99f9f7a9">rip</a>[<a class="code" href="../../d6/d4a/inet_8h.html#a70f8406c9556460a606bee45306c5630">MAX_IP_INT</a>]; <span class="comment">/* the ip of the requester node */</span></div>
<div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="../../dd/da3/structsingle__acache__hdr.html#a22fbda6781c88e9f9ec6a0b385591fec"> 195</a></span>&#160; u_int <a class="code" href="../../dd/da3/structsingle__acache__hdr.html#a22fbda6781c88e9f9ec6a0b385591fec">hash</a>[<a class="code" href="../../d6/d4a/inet_8h.html#a70f8406c9556460a606bee45306c5630">MAX_IP_INT</a>];</div>
<div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="../../dd/da3/structsingle__acache__hdr.html#a5e65671dfc89ef2ebc06f69bd383221b"> 196</a></span>&#160; u_short <a class="code" href="../../dd/da3/structsingle__acache__hdr.html#a5e65671dfc89ef2ebc06f69bd383221b">hgnodes</a>; <span class="comment">/* Number of hgnodes in the </span></div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="comment"> body. */</span></div>
<div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="../../dd/da3/structsingle__acache__hdr.html#ac54c839302973e945784c56e6e647342"> 198</a></span>&#160; u_char <a class="code" href="../../dd/da3/structsingle__acache__hdr.html#ac54c839302973e945784c56e6e647342">flags</a>;</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;} <a class="code" href="../../d5/d05/andna_8h.html#a4c52ad8b19c7abe19131ffa3ebebe747">_PACKED_</a>;</div>
<div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="../../d5/d05/andna_8h.html#ac880dc6fe4899035229fee55fe4c4410"> 200</a></span>&#160;<a class="code" href="../../dc/d3e/endianness_8h.html#a3e44b8503d7a90af675c81800fe6d275">INT_INFO</a> <a class="code" href="../../d5/d05/andna_8h.html#ac880dc6fe4899035229fee55fe4c4410">single_acache_hdr_iinfo</a> = { 1, <span class="comment">/* `rip&#39; and `hash&#39; are ignored */</span></div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; { <a class="code" href="../../dc/d3e/endianness_8h.html#a66b75e81c28419f622f82e631e5da9bc">INT_TYPE_16BIT</a> },</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; { <a class="code" href="../../d6/d4a/inet_8h.html#a58d45ce77dd4360314b4fd8ca70d9fb8">MAX_IP_SZ</a>*2 },</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; { 1 },</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; };</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="comment"> * The single_acache body is:</span></div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="comment"> * struct {</span></div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="comment"> * u_int hgnode[MAX_IP_INT];</span></div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;<span class="comment"> * } body[new_hash_gnode_hdr.hgnodes];</span></div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="../../d5/d05/andna_8h.html#a48ab9166eda7e643b73cbe0ff941b2a5"> 211</a></span>&#160;<span class="preprocessor">#define SINGLE_ACACHE_PKT_SZ(hgnodes) (sizeof(struct single_acache_hdr)+\</span></div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;<span class="preprocessor"> MAX_IP_SZ*(hgnodes))</span></div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;<span class="comment"> * The single_acache_reply is just an andna_cache_pkt with a single cache.</span></div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="comment"> * Tell the node, which receives the pkt, to send a ANDNA_GET_SINGLE_ACACHE</span></div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="comment"> * request to fetch the andna_cache for the `hash&#39; included in the pkt.</span></div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00223"></a><span class="lineno"><a class="line" href="../../d8/d04/structspread__acache__pkt.html"> 223</a></span>&#160;<span class="keyword">struct </span><a class="code" href="../../d8/d04/structspread__acache__pkt.html">spread_acache_pkt</a></div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;{</div>
<div class="line"><a name="l00225"></a><span class="lineno"><a class="line" href="../../d8/d04/structspread__acache__pkt.html#aa3c7862877e57fdca226a48196af1dc4"> 225</a></span>&#160; u_int <a class="code" href="../../d8/d04/structspread__acache__pkt.html#aa3c7862877e57fdca226a48196af1dc4">hash</a>[<a class="code" href="../../d6/d4a/inet_8h.html#a70f8406c9556460a606bee45306c5630">MAX_IP_INT</a>];</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;} <a class="code" href="../../d5/d05/andna_8h.html#a4c52ad8b19c7abe19131ffa3ebebe747">_PACKED_</a>;</div>
<div class="line"><a name="l00227"></a><span class="lineno"><a class="line" href="../../d5/d05/andna_8h.html#a0b9658da5f2f90ecf6f703b35cfe81d9"> 227</a></span>&#160;<span class="preprocessor">#define SPREAD_ACACHE_PKT_SZ (sizeof(struct spread_acache_pkt))</span></div>
<div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="../../d5/d05/andna_8h.html#a808cc006da4a82631431ea83b97eb8e6"> 228</a></span>&#160;<a class="code" href="../../dc/d3e/endianness_8h.html#a3e44b8503d7a90af675c81800fe6d275">INT_INFO</a> <a class="code" href="../../d5/d05/andna_8h.html#a808cc006da4a82631431ea83b97eb8e6">spread_acache_pkt_info</a> = { 0, { 0 }, { 0 }, { 0 } };</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="comment">/*\</span></div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="comment"> * * * * Function declaration * * *</span></div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="comment">\*/</span></div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d5/d05/andna_8h.html#afc0f24a5b798975732d4f238dccc42ef">andna_load_caches</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d5/d05/andna_8h.html#a55ec39a1613388c867100206d61c9fae">andna_save_caches</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d5/d05/andna_8h.html#aa7b53282a673cbc82c998a3cf4e5aff2">andna_init</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d5/d05/andna_8h.html#ad741f07b1bbda88076dfc6116707ba01">andna_close</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d5/d05/andna_8h.html#a481b301ec0adb5a8a6d176919ba5ac3e">andna_resolvconf_modify</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d5/d05/andna_8h.html#a90aee78fd7b0472165aca317c1a18721">andna_resolvconf_restore</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d5/d05/andna_8h.html#a47f535bfa2b7403ded9d8b4a7c19d27d">andna_register_hname</a>(<a class="code" href="../../d3/dc8/structlcl__cache.html">lcl_cache</a> *alcl, <a class="code" href="../../dc/d52/structsnsd__service.html">snsd_service</a> *snsd_delete);</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d5/d05/andna_8h.html#a5da3518ba270f03f8d087c3c1cb25115">andna_recv_reg_rq</a>(<a class="code" href="../../d6/dbc/structPACKET.html">PACKET</a> rpkt);</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d5/d05/andna_8h.html#a278c2e4e68b10357f59f3edbaa9bf7de">andna_check_counter</a>(<a class="code" href="../../d6/dbc/structPACKET.html">PACKET</a> pkt);</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d5/d05/andna_8h.html#aaa787887419437e0bca8efae5cd88aaf">andna_recv_check_counter</a>(<a class="code" href="../../d6/dbc/structPACKET.html">PACKET</a> rpkt);</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<a class="code" href="../../dc/d52/structsnsd__service.html">snsd_service</a> *<a class="code" href="../../d5/d05/andna_8h.html#a1ce60180d15ab89d473eb45928ee6ee5">andna_resolve_hash</a>(u_int hname_hash[<a class="code" href="../../d6/d4a/inet_8h.html#a70f8406c9556460a606bee45306c5630">MAX_IP_INT</a>], <span class="keywordtype">int</span> service, </div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; u_char proto, <span class="keywordtype">int</span> *records);</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<a class="code" href="../../dc/d52/structsnsd__service.html">snsd_service</a> *<a class="code" href="../../d5/d05/andna_8h.html#aa3b87d2348a3a7cdb6e2d95c66fdfb6f">andna_resolve_hname</a>(<span class="keywordtype">char</span> *hname, <span class="keywordtype">int</span> service, u_char proto, </div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordtype">int</span> *records);</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d5/d05/andna_8h.html#a8aab86a04409ff7c8baef00863464621">andna_recv_resolve_rq</a>(<a class="code" href="../../d6/dbc/structPACKET.html">PACKET</a> rpkt);</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<a class="code" href="../../d3/dc8/structlcl__cache.html">lcl_cache</a> *<a class="code" href="../../d5/d05/andna_8h.html#a9f9606b7d11bf10088542d80e6aac805">andna_reverse_resolve</a>(<a class="code" href="../../da/d1d/structinet__prefix.html">inet_prefix</a> ip);</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d5/d05/andna_8h.html#a44e3e539ab14f207121225a8f649acf8">andna_recv_rev_resolve_rq</a>(<a class="code" href="../../d6/dbc/structPACKET.html">PACKET</a> rpkt);</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d5/d05/andna_8h.html#ac5be4621b26ee1e36c55a6da772614de">spread_single_acache</a>(u_int hash[<a class="code" href="../../d6/d4a/inet_8h.html#a70f8406c9556460a606bee45306c5630">MAX_IP_INT</a>]);</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d5/d05/andna_8h.html#a7cb15ea6895d12e1dc8b334360de6819">recv_spread_single_acache</a>(<a class="code" href="../../d6/dbc/structPACKET.html">PACKET</a> rpkt);</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<a class="code" href="../../d6/df5/structandna__cache.html">andna_cache</a> *<a class="code" href="../../d5/d05/andna_8h.html#a176509d35d2405f8416d22b7defd2081">get_single_andna_c</a>(u_int hash[<a class="code" href="../../d6/d4a/inet_8h.html#a70f8406c9556460a606bee45306c5630">MAX_IP_INT</a>], u_int hash_gnode[MAX_IP_INT]);</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d5/d05/andna_8h.html#a518d5d1d638386131f4e1ca4b5e2edb6">put_single_acache</a>(<a class="code" href="../../d6/dbc/structPACKET.html">PACKET</a> rpkt);</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d5/d05/andna_8h.html#a288580e9a1dfc745225f740d4afb9f6d">put_andna_cache</a>(<a class="code" href="../../d6/dbc/structPACKET.html">PACKET</a> rq_pkt);</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d5/d05/andna_8h.html#a2196e258ccd91d09ad736705e25b59ce">put_counter_cache</a>(<a class="code" href="../../d6/dbc/structPACKET.html">PACKET</a> rq_pkt);</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<span class="keywordtype">void</span> *<a class="code" href="../../d5/d05/andna_8h.html#a533e80474668ec6d63b4e5302b910a6c">andna_hook</a>(<span class="keywordtype">void</span> *);</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d5/d05/andna_8h.html#a22751676386bfd17dd30f88528ee0f12">andna_update_hnames</a>(<span class="keywordtype">int</span> only_new_hname);</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="keywordtype">void</span> *<a class="code" href="../../d5/d05/andna_8h.html#ac5e2e3a07b8b99edbc9501aae6e5b1ff">andna_maintain_hnames_active</a>(<span class="keywordtype">void</span> *null);</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="keywordtype">void</span> *<a class="code" href="../../d5/d05/andna_8h.html#ae8a0abdfc416da1b04dafe5c30fb14c3">andna_main</a>(<span class="keywordtype">void</span> *);</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/*ANDNA_H*/</span><span class="preprocessor"></span></div>
<div class="ttc" id="andna_8h_html_a8aab86a04409ff7c8baef00863464621"><div class="ttname"><a href="../../d5/d05/andna_8h.html#a8aab86a04409ff7c8baef00863464621">andna_recv_resolve_rq</a></div><div class="ttdeci">int andna_recv_resolve_rq(PACKET rpkt)</div><div class="ttdef"><b>Definition:</b> andna.c:1507</div></div>
<div class="ttc" id="andna_8h_html_a286dc3ea5963039c1e7e3972c187e282"><div class="ttname"><a href="../../d5/d05/andna_8h.html#a286dc3ea5963039c1e7e3972c187e282">andna_reg_pkt_iinfo</a></div><div class="ttdeci">static const int_info andna_reg_pkt_iinfo</div><div class="ttdef"><b>Definition:</b> andna.h:121</div></div>
<div class="ttc" id="structspread__acache__pkt_html_aa3c7862877e57fdca226a48196af1dc4"><div class="ttname"><a href="../../d8/d04/structspread__acache__pkt.html#aa3c7862877e57fdca226a48196af1dc4">spread_acache_pkt::hash</a></div><div class="ttdeci">u_int hash[4]</div><div class="ttdef"><b>Definition:</b> andna.h:225</div></div>
<div class="ttc" id="structandna__reg__pkt_html"><div class="ttname"><a href="../../d4/d9d/structandna__reg__pkt.html">andna_reg_pkt</a></div><div class="ttdef"><b>Definition:</b> andna.h:101</div></div>
<div class="ttc" id="structandna__reg__pkt_html_ac4c5b5e313cfdf813de44bd36f627728"><div class="ttname"><a href="../../d4/d9d/structandna__reg__pkt.html#ac4c5b5e313cfdf813de44bd36f627728">andna_reg_pkt::sign</a></div><div class="ttdeci">char sign[128]</div><div class="ttdef"><b>Definition:</b> andna.h:111</div></div>
<div class="ttc" id="structsingle__acache__hdr_html"><div class="ttname"><a href="../../dd/da3/structsingle__acache__hdr.html">single_acache_hdr</a></div><div class="ttdef"><b>Definition:</b> andna.h:192</div></div>
<div class="ttc" id="andna_8h_html_aa3b87d2348a3a7cdb6e2d95c66fdfb6f"><div class="ttname"><a href="../../d5/d05/andna_8h.html#aa3b87d2348a3a7cdb6e2d95c66fdfb6f">andna_resolve_hname</a></div><div class="ttdeci">snsd_service * andna_resolve_hname(char *hname, int service, u_char proto, int *records)</div><div class="ttdef"><b>Definition:</b> andna.c:1491</div></div>
<div class="ttc" id="structandna__cache_html"><div class="ttname"><a href="../../d6/df5/structandna__cache.html">andna_cache</a></div><div class="ttdef"><b>Definition:</b> andna_cache.h:95</div></div>
<div class="ttc" id="structandna__resolve__rq__pkt_html_abe66dcaf94b35021d243fa136421543f"><div class="ttname"><a href="../../d0/d3f/structandna__resolve__rq__pkt.html#abe66dcaf94b35021d243fa136421543f">andna_resolve_rq_pkt::flags</a></div><div class="ttdeci">char flags</div><div class="ttdef"><b>Definition:</b> andna.h:137</div></div>
<div class="ttc" id="structandna__resolve__reply__pkt_html"><div class="ttname"><a href="../../d3/dbb/structandna__resolve__reply__pkt.html">andna_resolve_reply_pkt</a></div><div class="ttdef"><b>Definition:</b> andna.h:154</div></div>
<div class="ttc" id="andna_8h_html_a7cb15ea6895d12e1dc8b334360de6819"><div class="ttname"><a href="../../d5/d05/andna_8h.html#a7cb15ea6895d12e1dc8b334360de6819">recv_spread_single_acache</a></div><div class="ttdeci">int recv_spread_single_acache(PACKET rpkt)</div><div class="ttdef"><b>Definition:</b> andna.c:2062</div></div>
<div class="ttc" id="structandna__reg__pkt_html_ac44350143f3b5b468220738a85881a9f"><div class="ttname"><a href="../../d4/d9d/structandna__reg__pkt.html#ac44350143f3b5b468220738a85881a9f">andna_reg_pkt::rip</a></div><div class="ttdeci">u_int rip[4]</div><div class="ttdef"><b>Definition:</b> andna.h:103</div></div>
<div class="ttc" id="andna__cache_8h_html"><div class="ttname"><a href="../../d7/d74/andna__cache_8h.html">andna_cache.h</a></div></div>
<div class="ttc" id="structspread__acache__pkt_html"><div class="ttname"><a href="../../d8/d04/structspread__acache__pkt.html">spread_acache_pkt</a></div><div class="ttdef"><b>Definition:</b> andna.h:223</div></div>
<div class="ttc" id="andna_8h_html_a03fa307fe55aecd8ff89a4c07b07ac87"><div class="ttname"><a href="../../d5/d05/andna_8h.html#a03fa307fe55aecd8ff89a4c07b07ac87">last_spread_acache_pkt_id</a></div><div class="ttdeci">int last_spread_acache_pkt_id[(5 *3+1)]</div><div class="ttdef"><b>Definition:</b> andna.h:44</div></div>
<div class="ttc" id="structandna__reg__pkt_html_a3998bf0220e08792666ab2caa6aa80b2"><div class="ttname"><a href="../../d4/d9d/structandna__reg__pkt.html#a3998bf0220e08792666ab2caa6aa80b2">andna_reg_pkt::hname_updates</a></div><div class="ttdeci">u_short hname_updates</div><div class="ttdef"><b>Definition:</b> andna.h:108</div></div>
<div class="ttc" id="andna_8h_html_aa7b53282a673cbc82c998a3cf4e5aff2"><div class="ttname"><a href="../../d5/d05/andna_8h.html#aa7b53282a673cbc82c998a3cf4e5aff2">andna_init</a></div><div class="ttdeci">void andna_init(void)</div><div class="ttdef"><b>Definition:</b> andna.c:158</div></div>
<div class="ttc" id="pkts_8h_html"><div class="ttname"><a href="../../d5/d89/pkts_8h.html">pkts.h</a></div></div>
<div class="ttc" id="andna_8h_html_aeaaeca3362f81ce39485cac164c774db"><div class="ttname"><a href="../../d5/d05/andna_8h.html#aeaaeca3362f81ce39485cac164c774db">last_reg_pkt_id</a></div><div class="ttdeci">int last_reg_pkt_id[(5 *3+1)]</div><div class="ttdef"><b>Definition:</b> andna.h:42</div></div>
<div class="ttc" id="structandna__resolve__rq__pkt_html_abb28ba84165824d3df4bcd3030846604"><div class="ttname"><a href="../../d0/d3f/structandna__resolve__rq__pkt.html#abb28ba84165824d3df4bcd3030846604">andna_resolve_rq_pkt::rip</a></div><div class="ttdeci">u_int rip[4]</div><div class="ttdef"><b>Definition:</b> andna.h:136</div></div>
<div class="ttc" id="andna_8h_html_a176509d35d2405f8416d22b7defd2081"><div class="ttname"><a href="../../d5/d05/andna_8h.html#a176509d35d2405f8416d22b7defd2081">get_single_andna_c</a></div><div class="ttdeci">andna_cache * get_single_andna_c(u_int hash[4], u_int hash_gnode[4])</div><div class="ttdef"><b>Definition:</b> andna.c:1794</div></div>
<div class="ttc" id="andna_8h_html_a808cc006da4a82631431ea83b97eb8e6"><div class="ttname"><a href="../../d5/d05/andna_8h.html#a808cc006da4a82631431ea83b97eb8e6">spread_acache_pkt_info</a></div><div class="ttdeci">static const int_info spread_acache_pkt_info</div><div class="ttdef"><b>Definition:</b> andna.h:228</div></div>
<div class="ttc" id="endianness_8h_html_a66b75e81c28419f622f82e631e5da9bc"><div class="ttname"><a href="../../dc/d3e/endianness_8h.html#a66b75e81c28419f622f82e631e5da9bc">INT_TYPE_16BIT</a></div><div class="ttdeci">#define INT_TYPE_16BIT</div><div class="ttdef"><b>Definition:</b> endianness.h:36</div></div>
<div class="ttc" id="andna_8h_html_a44e3e539ab14f207121225a8f649acf8"><div class="ttname"><a href="../../d5/d05/andna_8h.html#a44e3e539ab14f207121225a8f649acf8">andna_recv_rev_resolve_rq</a></div><div class="ttdeci">int andna_recv_rev_resolve_rq(PACKET rpkt)</div><div class="ttdef"><b>Definition:</b> andna.c:1737</div></div>
<div class="ttc" id="andna__cache_8h_html_a34fa864991b3bfa0579a3f45bb590563"><div class="ttname"><a href="../../d7/d74/andna__cache_8h.html#a34fa864991b3bfa0579a3f45bb590563">ANDNA_SIGNATURE_LEN</a></div><div class="ttdeci">#define ANDNA_SIGNATURE_LEN</div><div class="ttdef"><b>Definition:</b> andna_cache.h:47</div></div>
<div class="ttc" id="andna_8h_html_ac880dc6fe4899035229fee55fe4c4410"><div class="ttname"><a href="../../d5/d05/andna_8h.html#ac880dc6fe4899035229fee55fe4c4410">single_acache_hdr_iinfo</a></div><div class="ttdeci">static const int_info single_acache_hdr_iinfo</div><div class="ttdef"><b>Definition:</b> andna.h:200</div></div>
<div class="ttc" id="andna_8h_html_a4c52ad8b19c7abe19131ffa3ebebe747"><div class="ttname"><a href="../../d5/d05/andna_8h.html#a4c52ad8b19c7abe19131ffa3ebebe747">_PACKED_</a></div><div class="ttdeci">struct andna_reg_pkt _PACKED_</div></div>
<div class="ttc" id="structsingle__acache__hdr_html_a5e65671dfc89ef2ebc06f69bd383221b"><div class="ttname"><a href="../../dd/da3/structsingle__acache__hdr.html#a5e65671dfc89ef2ebc06f69bd383221b">single_acache_hdr::hgnodes</a></div><div class="ttdeci">u_short hgnodes</div><div class="ttdef"><b>Definition:</b> andna.h:196</div></div>
<div class="ttc" id="andna_8h_html_aa6bdf623adc2d41d1fffb016dd60b84f"><div class="ttname"><a href="../../d5/d05/andna_8h.html#aa6bdf623adc2d41d1fffb016dd60b84f">last_counter_pkt_id</a></div><div class="ttdeci">int last_counter_pkt_id[(5 *3+1)]</div><div class="ttdef"><b>Definition:</b> andna.h:43</div></div>
<div class="ttc" id="structandna__resolve__rq__pkt_html"><div class="ttname"><a href="../../d0/d3f/structandna__resolve__rq__pkt.html">andna_resolve_rq_pkt</a></div><div class="ttdef"><b>Definition:</b> andna.h:134</div></div>
<div class="ttc" id="andna_8h_html_ac5e2e3a07b8b99edbc9501aae6e5b1ff"><div class="ttname"><a href="../../d5/d05/andna_8h.html#ac5e2e3a07b8b99edbc9501aae6e5b1ff">andna_maintain_hnames_active</a></div><div class="ttdeci">void * andna_maintain_hnames_active(void *null)</div><div class="ttdef"><b>Definition:</b> andna.c:2420</div></div>
<div class="ttc" id="andna_8h_html_a0aacae26e8f0b774dfa62cfd6c09353f"><div class="ttname"><a href="../../d5/d05/andna_8h.html#a0aacae26e8f0b774dfa62cfd6c09353f">ANDNA_MAX_FLOODS</a></div><div class="ttdeci">#define ANDNA_MAX_FLOODS</div><div class="ttdef"><b>Definition:</b> andna.h:31</div></div>
<div class="ttc" id="structinet__prefix_html"><div class="ttname"><a href="../../da/d1d/structinet__prefix.html">inet_prefix</a></div><div class="ttdef"><b>Definition:</b> inet.h:73</div></div>
<div class="ttc" id="andna_8h_html_a9f9606b7d11bf10088542d80e6aac805"><div class="ttname"><a href="../../d5/d05/andna_8h.html#a9f9606b7d11bf10088542d80e6aac805">andna_reverse_resolve</a></div><div class="ttdeci">lcl_cache * andna_reverse_resolve(inet_prefix ip)</div><div class="ttdef"><b>Definition:</b> andna.c:1684</div></div>
<div class="ttc" id="structsnsd__service_html"><div class="ttname"><a href="../../dc/d52/structsnsd__service.html">snsd_service</a></div><div class="ttdef"><b>Definition:</b> snsd_cache.h:125</div></div>
<div class="ttc" id="andna_8h_html_a29be91bbf9b07c3c95c6c5d72b1bf515"><div class="ttname"><a href="../../d5/d05/andna_8h.html#a29be91bbf9b07c3c95c6c5d72b1bf515">andna_resolve_reply_pkt_iinfo</a></div><div class="ttdeci">static const int_info andna_resolve_reply_pkt_iinfo</div><div class="ttdef"><b>Definition:</b> andna.h:165</div></div>
<div class="ttc" id="inet_8h_html_a58d45ce77dd4360314b4fd8ca70d9fb8"><div class="ttname"><a href="../../d6/d4a/inet_8h.html#a58d45ce77dd4360314b4fd8ca70d9fb8">MAX_IP_SZ</a></div><div class="ttdeci">#define MAX_IP_SZ</div><div class="ttdef"><b>Definition:</b> inet.h:25</div></div>
<div class="ttc" id="andna_8h_html_ac5be4621b26ee1e36c55a6da772614de"><div class="ttname"><a href="../../d5/d05/andna_8h.html#ac5be4621b26ee1e36c55a6da772614de">spread_single_acache</a></div><div class="ttdeci">int spread_single_acache(u_int hash[4])</div><div class="ttdef"><b>Definition:</b> andna.c:2037</div></div>
<div class="ttc" id="andna_8h_html_a55ec39a1613388c867100206d61c9fae"><div class="ttname"><a href="../../d5/d05/andna_8h.html#a55ec39a1613388c867100206d61c9fae">andna_save_caches</a></div><div class="ttdeci">int andna_save_caches(void)</div><div class="ttdef"><b>Definition:</b> andna.c:103</div></div>
<div class="ttc" id="andna_8h_html_a2196e258ccd91d09ad736705e25b59ce"><div class="ttname"><a href="../../d5/d05/andna_8h.html#a2196e258ccd91d09ad736705e25b59ce">put_counter_cache</a></div><div class="ttdeci">int put_counter_cache(PACKET rq_pkt)</div><div class="ttdef"><b>Definition:</b> andna.c:2256</div></div>
<div class="ttc" id="andna_8h_html_afc0f24a5b798975732d4f238dccc42ef"><div class="ttname"><a href="../../d5/d05/andna_8h.html#afc0f24a5b798975732d4f238dccc42ef">andna_load_caches</a></div><div class="ttdeci">int andna_load_caches(void)</div><div class="ttdef"><b>Definition:</b> andna.c:60</div></div>
<div class="ttc" id="inet_8h_html_a70f8406c9556460a606bee45306c5630"><div class="ttname"><a href="../../d6/d4a/inet_8h.html#a70f8406c9556460a606bee45306c5630">MAX_IP_INT</a></div><div class="ttdeci">#define MAX_IP_INT</div><div class="ttdef"><b>Definition:</b> inet.h:24</div></div>
<div class="ttc" id="structsingle__acache__hdr_html_a22fbda6781c88e9f9ec6a0b385591fec"><div class="ttname"><a href="../../dd/da3/structsingle__acache__hdr.html#a22fbda6781c88e9f9ec6a0b385591fec">single_acache_hdr::hash</a></div><div class="ttdeci">u_int hash[4]</div><div class="ttdef"><b>Definition:</b> andna.h:195</div></div>
<div class="ttc" id="structandna__reg__pkt_html_a7e3d36f5c676c3af616bad2fd29f0ca6"><div class="ttname"><a href="../../d4/d9d/structandna__reg__pkt.html#a7e3d36f5c676c3af616bad2fd29f0ca6">andna_reg_pkt::pubkey</a></div><div class="ttdeci">char pubkey[140]</div><div class="ttdef"><b>Definition:</b> andna.h:106</div></div>
<div class="ttc" id="andna_8h_html_a518d5d1d638386131f4e1ca4b5e2edb6"><div class="ttname"><a href="../../d5/d05/andna_8h.html#a518d5d1d638386131f4e1ca4b5e2edb6">put_single_acache</a></div><div class="ttdeci">int put_single_acache(PACKET rpkt)</div><div class="ttdef"><b>Definition:</b> andna.c:1867</div></div>
<div class="ttc" id="andna_8h_html_a90aee78fd7b0472165aca317c1a18721"><div class="ttname"><a href="../../d5/d05/andna_8h.html#a90aee78fd7b0472165aca317c1a18721">andna_resolvconf_restore</a></div><div class="ttdeci">void andna_resolvconf_restore(void)</div><div class="ttdef"><b>Definition:</b> andna.c:140</div></div>
<div class="ttc" id="structandna__resolve__rq__pkt_html_a56110eb97e0054f5f1a741164f63f1aa"><div class="ttname"><a href="../../d0/d3f/structandna__resolve__rq__pkt.html#a56110eb97e0054f5f1a741164f63f1aa">andna_resolve_rq_pkt::hash</a></div><div class="ttdeci">u_int hash[4]</div><div class="ttdef"><b>Definition:</b> andna.h:139</div></div>
<div class="ttc" id="andna_8h_html_a288580e9a1dfc745225f740d4afb9f6d"><div class="ttname"><a href="../../d5/d05/andna_8h.html#a288580e9a1dfc745225f740d4afb9f6d">put_andna_cache</a></div><div class="ttdeci">int put_andna_cache(PACKET rq_pkt)</div><div class="ttdef"><b>Definition:</b> andna.c:2174</div></div>
<div class="ttc" id="structandna__reg__pkt_html_a0dcb7da5ae9e620c4691fb4c10055003"><div class="ttname"><a href="../../d4/d9d/structandna__reg__pkt.html#a0dcb7da5ae9e620c4691fb4c10055003">andna_reg_pkt::hash</a></div><div class="ttdeci">u_int hash[4]</div><div class="ttdef"><b>Definition:</b> andna.h:104</div></div>
<div class="ttc" id="andna_8h_html_a47f535bfa2b7403ded9d8b4a7c19d27d"><div class="ttname"><a href="../../d5/d05/andna_8h.html#a47f535bfa2b7403ded9d8b4a7c19d27d">andna_register_hname</a></div><div class="ttdeci">int andna_register_hname(lcl_cache *alcl, snsd_service *snsd_delete)</div><div class="ttdef"><b>Definition:</b> andna.c:611</div></div>
<div class="ttc" id="endianness_8h_html_a3e44b8503d7a90af675c81800fe6d275"><div class="ttname"><a href="../../dc/d3e/endianness_8h.html#a3e44b8503d7a90af675c81800fe6d275">INT_INFO</a></div><div class="ttdeci">#define INT_INFO</div><div class="ttdef"><b>Definition:</b> endianness.h:90</div></div>
<div class="ttc" id="structlcl__cache_html"><div class="ttname"><a href="../../d3/dc8/structlcl__cache.html">lcl_cache</a></div><div class="ttdef"><b>Definition:</b> andna_cache.h:172</div></div>
<div class="ttc" id="andna_8h_html_a4587480bcd2d4f84198c21436f33b3d4"><div class="ttname"><a href="../../d5/d05/andna_8h.html#a4587480bcd2d4f84198c21436f33b3d4">andna_resolve_rq_pkt_iinfo</a></div><div class="ttdeci">static const int_info andna_resolve_rq_pkt_iinfo</div><div class="ttdef"><b>Definition:</b> andna.h:145</div></div>
<div class="ttc" id="structsingle__acache__hdr_html_ac54c839302973e945784c56e6e647342"><div class="ttname"><a href="../../dd/da3/structsingle__acache__hdr.html#ac54c839302973e945784c56e6e647342">single_acache_hdr::flags</a></div><div class="ttdeci">u_char flags</div><div class="ttdef"><b>Definition:</b> andna.h:198</div></div>
<div class="ttc" id="andna_8h_html_a22751676386bfd17dd30f88528ee0f12"><div class="ttname"><a href="../../d5/d05/andna_8h.html#a22751676386bfd17dd30f88528ee0f12">andna_update_hnames</a></div><div class="ttdeci">void andna_update_hnames(int only_new_hname)</div><div class="ttdef"><b>Definition:</b> andna.c:2388</div></div>
<div class="ttc" id="structandna__resolve__rq__pkt_html_a30a645fb9a6de4b8b2b793196fe78c6f"><div class="ttname"><a href="../../d0/d3f/structandna__resolve__rq__pkt.html#a30a645fb9a6de4b8b2b793196fe78c6f">andna_resolve_rq_pkt::service</a></div><div class="ttdeci">int service</div><div class="ttdef"><b>Definition:</b> andna.h:141</div></div>
<div class="ttc" id="andna_8h_html_a1ce60180d15ab89d473eb45928ee6ee5"><div class="ttname"><a href="../../d5/d05/andna_8h.html#a1ce60180d15ab89d473eb45928ee6ee5">andna_resolve_hash</a></div><div class="ttdeci">snsd_service * andna_resolve_hash(u_int hname_hash[4], int service, u_char proto, int *records)</div><div class="ttdef"><b>Definition:</b> andna.c:1357</div></div>
<div class="ttc" id="structsingle__acache__hdr_html_a7d1b9e3c057e684173868cde99f9f7a9"><div class="ttname"><a href="../../dd/da3/structsingle__acache__hdr.html#a7d1b9e3c057e684173868cde99f9f7a9">single_acache_hdr::rip</a></div><div class="ttdeci">u_int rip[4]</div><div class="ttdef"><b>Definition:</b> andna.h:194</div></div>
<div class="ttc" id="structandna__reg__pkt_html_afb4d58e3e5b2c96fcabb66698660bbd2"><div class="ttname"><a href="../../d4/d9d/structandna__reg__pkt.html#afb4d58e3e5b2c96fcabb66698660bbd2">andna_reg_pkt::flags</a></div><div class="ttdeci">char flags</div><div class="ttdef"><b>Definition:</b> andna.h:115</div></div>
<div class="ttc" id="structandna__resolve__rq__pkt_html_a55df951f35ad31dce41da5418dec327f"><div class="ttname"><a href="../../d0/d3f/structandna__resolve__rq__pkt.html#a55df951f35ad31dce41da5418dec327f">andna_resolve_rq_pkt::proto</a></div><div class="ttdeci">u_char proto</div><div class="ttdef"><b>Definition:</b> andna.h:142</div></div>
<div class="ttc" id="structPACKET_html"><div class="ttname"><a href="../../d6/dbc/structPACKET.html">PACKET</a></div><div class="ttdef"><b>Definition:</b> pkts.h:118</div></div>
<div class="ttc" id="andna_8h_html_a278c2e4e68b10357f59f3edbaa9bf7de"><div class="ttname"><a href="../../d5/d05/andna_8h.html#a278c2e4e68b10357f59f3edbaa9bf7de">andna_check_counter</a></div><div class="ttdeci">int andna_check_counter(PACKET pkt)</div><div class="ttdef"><b>Definition:</b> andna.c:1015</div></div>
<div class="ttc" id="andna_8h_html_ad741f07b1bbda88076dfc6116707ba01"><div class="ttname"><a href="../../d5/d05/andna_8h.html#ad741f07b1bbda88076dfc6116707ba01">andna_close</a></div><div class="ttdeci">void andna_close(void)</div><div class="ttdef"><b>Definition:</b> andna.c:214</div></div>
<div class="ttc" id="andna_8h_html_a5da3518ba270f03f8d087c3c1cb25115"><div class="ttname"><a href="../../d5/d05/andna_8h.html#a5da3518ba270f03f8d087c3c1cb25115">andna_recv_reg_rq</a></div><div class="ttdeci">int andna_recv_reg_rq(PACKET rpkt)</div><div class="ttdef"><b>Definition:</b> andna.c:729</div></div>
<div class="ttc" id="andna_8h_html_a481b301ec0adb5a8a6d176919ba5ac3e"><div class="ttname"><a href="../../d5/d05/andna_8h.html#a481b301ec0adb5a8a6d176919ba5ac3e">andna_resolvconf_modify</a></div><div class="ttdeci">void andna_resolvconf_modify(void)</div><div class="ttdef"><b>Definition:</b> andna.c:123</div></div>
<div class="ttc" id="endianness_8h_html_acc663d0291dd4a32c1dfbed3167bd58b"><div class="ttname"><a href="../../dc/d3e/endianness_8h.html#acc663d0291dd4a32c1dfbed3167bd58b">INT_TYPE_32BIT</a></div><div class="ttdeci">#define INT_TYPE_32BIT</div><div class="ttdef"><b>Definition:</b> endianness.h:35</div></div>
<div class="ttc" id="andna__cache_8h_html_a8c597b42f177efc44b30898859f26d39"><div class="ttname"><a href="../../d7/d74/andna__cache_8h.html#a8c597b42f177efc44b30898859f26d39">ANDNA_PKEY_LEN</a></div><div class="ttdeci">#define ANDNA_PKEY_LEN</div><div class="ttdef"><b>Definition:</b> andna_cache.h:45</div></div>
<div class="ttc" id="andna_8h_html_aaa787887419437e0bca8efae5cd88aaf"><div class="ttname"><a href="../../d5/d05/andna_8h.html#aaa787887419437e0bca8efae5cd88aaf">andna_recv_check_counter</a></div><div class="ttdeci">int andna_recv_check_counter(PACKET rpkt)</div><div class="ttdef"><b>Definition:</b> andna.c:1079</div></div>
<div class="ttc" id="structandna__resolve__reply__pkt_html_ab6f592595f3b5c91ec69bdce4bd31452"><div class="ttname"><a href="../../d3/dbb/structandna__resolve__reply__pkt.html#ab6f592595f3b5c91ec69bdce4bd31452">andna_resolve_reply_pkt::timestamp</a></div><div class="ttdeci">uint32_t timestamp</div><div class="ttdef"><b>Definition:</b> andna.h:156</div></div>
<div class="ttc" id="andna_8h_html_ae8a0abdfc416da1b04dafe5c30fb14c3"><div class="ttname"><a href="../../d5/d05/andna_8h.html#ae8a0abdfc416da1b04dafe5c30fb14c3">andna_main</a></div><div class="ttdeci">void * andna_main(void *)</div><div class="ttdef"><b>Definition:</b> andna.c:2458</div></div>
<div class="ttc" id="andna_8h_html_a533e80474668ec6d63b4e5302b910a6c"><div class="ttname"><a href="../../d5/d05/andna_8h.html#a533e80474668ec6d63b4e5302b910a6c">andna_hook</a></div><div class="ttdeci">void * andna_hook(void *)</div><div class="ttdef"><b>Definition:</b> andna.c:2297</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="../../d5/d05/andna_8h.html">andna.h</a></li>
<li class="footer">Generated on Wed Feb 19 2014 14:19:07 for The Netsukuku Project by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
</div>
</body>
</html>