netsukuku/d6/d2e/snsd__cache_8h_source.html
MissValeska f97a6e4a6f missvaleska@missvaleska-GA-970A-D3:~/Documents/Netsukuku/NtkDoc/html$ git status# On branch gh-pages
missvaleska@missvaleska-GA-970A-D3:~/Documents/Netsukuku/NtkDoc/html$ git status# On branch gh-pages
Doxygen generated Documentation
2014-02-19 15:45:00 -08:00

492 lines
85 KiB
HTML

<!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/snsd_cache.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('d6/d2e/snsd__cache_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">snsd_cache.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../d6/d2e/snsd__cache_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 2006 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 SNSD_H</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#define SNSD_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="../../d6/d4a/inet_8h.html">inet.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="../../da/da0/crypto_8h.html">crypto.h</a>&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../dc/d3e/endianness_8h.html">endianness.h</a>&quot;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d4/de1/llist_8c.html">llist.c</a>&quot;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * SNSD definitions</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div>
<div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="../../d6/d2e/snsd__cache_8h.html#afc407fde54f06788f4ed1f77bd4456f7"> 31</a></span>&#160;<span class="preprocessor">#define SNSD_MAX_RECORDS 256 </span><span class="comment">/* Number of maximum SNSD records</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> which can be stored in an</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> andna_cache */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="../../d6/d2e/snsd__cache_8h.html#a0e73f57159c140066701c981800fd505"> 34</a></span>&#160;<span class="preprocessor">#define SNSD_MAX_QUEUE_RECORDS 1 </span><span class="comment">/* There can be only one snsd </span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> record for the queued hnames */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="../../d6/d2e/snsd__cache_8h.html#a3e735da3df86771fc36bec50fe68a9f9"> 36</a></span>&#160;<span class="preprocessor">#define SNSD_MAX_REC_SERV 16 </span><span class="comment">/* Maximum records per service */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div>
<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="../../d6/d2e/snsd__cache_8h.html#a867e93850d035b260db10c2758f32851"> 38</a></span>&#160;<span class="preprocessor">#define SNSD_ALL_SERVICE (-1) </span><span class="comment">/* A service number equal to -1</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"> refers to all the available</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> services */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="../../d6/d2e/snsd__cache_8h.html#adb1ab59ecb3724f32fb628219e7ce04c"> 41</a></span>&#160;<span class="preprocessor">#define SNSD_DEFAULT_SERVICE 0</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="../../d6/d2e/snsd__cache_8h.html#abc8adf5ba246310311c1419aebd336d6"> 42</a></span>&#160;<span class="preprocessor">#define SNSD_DEFAULT_PROTO 1 </span><span class="comment">/* tcp */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="../../d6/d2e/snsd__cache_8h.html#a3ad6d74c0fb4859ca110f1dcb6d34780"> 43</a></span>&#160;<span class="preprocessor">#define SNSD_DEFAULT_PRIO 16</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="../../d6/d2e/snsd__cache_8h.html#a852c36145b067c96bc19ab448a5b0cd6"> 44</a></span>&#160;<span class="preprocessor">#define SNSD_DEFAULT_WEIGHT 1</span></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"><a class="line" href="../../d6/d2e/snsd__cache_8h.html#a5b3c059f94d262fd845b716864feeb67"> 46</a></span>&#160;<span class="preprocessor">#define SNSD_WEIGHT(x) ((x) &amp; 0x7f) </span><span class="comment">/* The snsd weight has to </span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"> be &lt;= 127 */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment">/* Fields used in the syntax for the `snsd_nodes&#39; file:</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"> * hostname:snsd_hostname:service:priority:weight[:pub_key_file]</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"><a class="line" href="../../d6/d2e/snsd__cache_8h.html#ae59ff41eb08fa44fb6b8cc6cc468742f"> 52</a></span>&#160;<span class="preprocessor">#define MAX_SNSD_LINE_SZ (ANDNA_MAX_HNAME_LEN*4)</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="../../d6/d2e/snsd__cache_8h.html#a2c0018920ffccacd41ae00bc7758b581"> 53</a></span>&#160;<span class="preprocessor">#define MAX_SNSD_FIELDS 6</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="../../d6/d2e/snsd__cache_8h.html#af01470063fa0d8c799d7f64a8b70b786"> 54</a></span>&#160;<span class="preprocessor">#define MIN_SNSD_FIELDS 5</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment">/* * snsd_node flags * */</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="../../d6/d2e/snsd__cache_8h.html#a6dbd05ce4cf2131e349262be0e28e2eb"> 57</a></span>&#160;<span class="preprocessor">#define SNSD_NODE_HNAME 1 </span><span class="comment">/* A hname is associated in the </span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment"> snsd record */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="../../d6/d2e/snsd__cache_8h.html#a81f4616638bb2f70f429ecb2247107c7"> 59</a></span>&#160;<span class="preprocessor">#define SNSD_NODE_IP (1&lt;&lt;1) </span><span class="comment">/* An IP is associated in the </span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment"> snsd record */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="../../d6/d2e/snsd__cache_8h.html#af818a3933a912b8be2dbdedd320dbca4"> 61</a></span>&#160;<span class="preprocessor">#define SNSD_NODE_MAIN_IP (1&lt;&lt;2) </span><span class="comment">/* This is the first IP registered </span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment"> to the hname, it can&#39;t be</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="comment"> deleted */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</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"> * snsd_node, snsd_service, snsd_prio</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> * They are three linked list. They are all orthogonal to each other.</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> * The snsd_node llist is inside each snsd_prio struct which is inside each</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"> * snsd_service struct:</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"> * || service X &lt;-&gt; service Y &lt;-&gt; service Z &lt;-&gt; ... ||</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"> * V V V</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"> * snsd_prio_1--&gt;node snsd_prio_1--&gt;node ...--&gt;...</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment"> * | |</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment"> * V V</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"> * snsd_prio_2--&gt;node ...--&gt;node</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment"> * |</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment"> * V</span></div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"> * ...--&gt;node</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment"> * Using this schema, we don&#39;t have to sort them, ever. The nodes are already</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment"> * grouped by service and in each service by priority.</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment"> * </span></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment"> * These llist are directly embedded in the andna_cache, lcl_cache and</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment"> * rh_cache.</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment"> * </span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment"> * The andna_cache keeps all the SNSD nodes associated to the registered</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment"> * hostname. The andna_cache doesn&#39;t need `snsd_node-&gt;pubkey&#39;.</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment"> * The rh_cache stores only records which are of the SNSD_NODE_IP type.</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment"> * When the lcl_cache is saved, its snsd llist is discarded because it is</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"> * loaded each time from the /etc/netsukuku/snsd_nodes file.</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="../../dd/d94/structsnsd__node.html"> 97</a></span>&#160;<span class="keyword">struct </span><a class="code" href="../../dd/d94/structsnsd__node.html">snsd_node</a></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;{ </div>
<div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="../../dd/d94/structsnsd__node.html#a769f1441a88bf7640c664baafedd305d"> 99</a></span>&#160; <a class="code" href="../../d4/de1/llist_8c.html#ac92348e99cfae025c3893c07fee7b263">LLIST_HDR</a> (<span class="keyword">struct</span> <a class="code" href="../../dd/d94/structsnsd__node.html">snsd_node</a>);</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; </div>
<div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="../../dd/d94/structsnsd__node.html#a421e15d148c6598e8dbe05c96a2611b4"> 101</a></span>&#160; u_int <a class="code" href="../../dd/d94/structsnsd__node.html#a421e15d148c6598e8dbe05c96a2611b4">record</a>[<a class="code" href="../../d6/d4a/inet_8h.html#a70f8406c9556460a606bee45306c5630">MAX_IP_INT</a>]; <span class="comment">/* It can be the IP or the md5</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment"> hash of the hname of the </span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment"> SNSD node */</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="../../dd/d94/structsnsd__node.html#a21229a7f6cfcbdc6aea237db889db016"> 104</a></span>&#160; RSA *<a class="code" href="../../dd/d94/structsnsd__node.html#a21229a7f6cfcbdc6aea237db889db016">pubkey</a>; <span class="comment">/* pubkey of the snsd_node */</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="../../dd/d94/structsnsd__node.html#aa46d28f63103e7f039307cdf9cfbe1e5"> 105</a></span>&#160; <span class="keywordtype">char</span> <a class="code" href="../../dd/d94/structsnsd__node.html#aa46d28f63103e7f039307cdf9cfbe1e5">flags</a>; <span class="comment">/* This will tell us what </span></div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="comment"> `record&#39; is */</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; </div>
<div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="../../dd/d94/structsnsd__node.html#af01dca5b869edae35cd703e0872fc916"> 108</a></span>&#160; u_char <a class="code" href="../../dd/d94/structsnsd__node.html#af01dca5b869edae35cd703e0872fc916">weight</a>;</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;};</div>
<div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="../../d6/d2e/snsd__cache_8h.html#a7defc501b3728dc90a1f59a4eb94c4eb"> 110</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="../../dd/d94/structsnsd__node.html">snsd_node</a> <a class="code" href="../../dd/d94/structsnsd__node.html">snsd_node</a>;</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="comment">/* In the pack of a snsd_node we don&#39;t save the `pubkey&#39; */</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="../../d6/d2e/snsd__cache_8h.html#acdf3d9cc8480f7d68e4c7c584a396c30"> 112</a></span>&#160;<span class="preprocessor">#define SNSD_NODE_PACK_SZ (MAX_IP_SZ+sizeof(char)*2)</span></div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;</div>
<div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="../../d6/d31/structsnsd__prio.html"> 114</a></span>&#160;<span class="keyword">struct </span><a class="code" href="../../d6/d31/structsnsd__prio.html">snsd_prio</a></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;{</div>
<div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="../../d6/d31/structsnsd__prio.html#ad1f31d779daa082e639531cb88eb30dc"> 116</a></span>&#160; <a class="code" href="../../d4/de1/llist_8c.html#ac92348e99cfae025c3893c07fee7b263">LLIST_HDR</a> (<span class="keyword">struct</span> <a class="code" href="../../d6/d31/structsnsd__prio.html">snsd_prio</a>);</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; </div>
<div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="../../d6/d31/structsnsd__prio.html#a3e1f0b00744b0d6077b89b3af1f146ee"> 118</a></span>&#160; u_char <a class="code" href="../../d6/d31/structsnsd__prio.html#a3e1f0b00744b0d6077b89b3af1f146ee">prio</a>; <span class="comment">/* Priority of the SNSD node */</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; </div>
<div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="../../d6/d31/structsnsd__prio.html#a6001597d618b50fd4ce3bab81b395d17"> 120</a></span>&#160; <a class="code" href="../../dd/d94/structsnsd__node.html">snsd_node</a> *<a class="code" href="../../d6/d31/structsnsd__prio.html#a6001597d618b50fd4ce3bab81b395d17">node</a>;</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;};</div>
<div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="../../d6/d2e/snsd__cache_8h.html#a3563571dc1dfedf8d7e706bc81d0e3ff"> 122</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="../../d6/d31/structsnsd__prio.html">snsd_prio</a> <a class="code" href="../../d6/d31/structsnsd__prio.html">snsd_prio</a>;</div>
<div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="../../d6/d2e/snsd__cache_8h.html#a65541da505b931a52e1f0371bd727f8b"> 123</a></span>&#160;<span class="preprocessor">#define SNSD_PRIO_PACK_SZ (sizeof(char))</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div>
<div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="../../dc/d52/structsnsd__service.html"> 125</a></span>&#160;<span class="keyword">struct </span><a class="code" href="../../dc/d52/structsnsd__service.html">snsd_service</a></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"><a class="line" href="../../dc/d52/structsnsd__service.html#ad0ddf1e8978bac11e72d671da09f563d"> 127</a></span>&#160; <a class="code" href="../../d4/de1/llist_8c.html#ac92348e99cfae025c3893c07fee7b263">LLIST_HDR</a> (<span class="keyword">struct</span> <a class="code" href="../../dc/d52/structsnsd__service.html">snsd_service</a>);</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div>
<div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="../../dc/d52/structsnsd__service.html#a7e2fd1526340d2f7ad5d8c16c488f873"> 129</a></span>&#160; u_short <a class="code" href="../../dc/d52/structsnsd__service.html#a7e2fd1526340d2f7ad5d8c16c488f873">service</a>; <span class="comment">/* Service number */</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="../../dc/d52/structsnsd__service.html#ae6ec59e5df0d02244257e779d821bdc8"> 130</a></span>&#160; u_char <a class="code" href="../../dc/d52/structsnsd__service.html#ae6ec59e5df0d02244257e779d821bdc8">proto</a>; <span class="comment">/* TCP/UDP, see the `proto_str&#39;</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="comment"> static array below */</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; </div>
<div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="../../dc/d52/structsnsd__service.html#a237b003471437bdaa64c7ea5edf208ab"> 133</a></span>&#160; <a class="code" href="../../d6/d31/structsnsd__prio.html">snsd_prio</a> *<a class="code" href="../../dc/d52/structsnsd__service.html#a237b003471437bdaa64c7ea5edf208ab">prio</a>;</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;};</div>
<div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="../../d6/d2e/snsd__cache_8h.html#a42f87098c8457751aeced39d7c59feec"> 135</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="../../dc/d52/structsnsd__service.html">snsd_service</a> <a class="code" href="../../dc/d52/structsnsd__service.html">snsd_service</a>;</div>
<div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="../../d6/d2e/snsd__cache_8h.html#a2f3d8685e5f7b80fc2925f2f1f07aef8"> 136</a></span>&#160;<span class="preprocessor">#define SNSD_SERVICE_PACK_SZ (sizeof(u_short)+sizeof(u_char))</span></div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;</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"> 139</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="comment"> * </span></div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="comment"> * * * * snsd structs package * * *</span></div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="comment"> * </span></div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;</div>
<div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="../../dc/d42/structsnsd__node__llist__hdr.html"> 145</a></span>&#160;<span class="keyword">struct </span><a class="code" href="../../dc/d42/structsnsd__node__llist__hdr.html">snsd_node_llist_hdr</a></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;{</div>
<div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="../../dc/d42/structsnsd__node__llist__hdr.html#a3b849ba2ccd8b95dc56e37efa871e08b"> 147</a></span>&#160; u_short <a class="code" href="../../dc/d42/structsnsd__node__llist__hdr.html#a3b849ba2ccd8b95dc56e37efa871e08b">count</a>; <span class="comment">/* # of snsd_node structs packed </span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="comment"> in the body */</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;}<a class="code" href="../../d6/d2e/snsd__cache_8h.html#af6e98af8fcdf87b2de8b58421b6b9515">_PACKED_</a>;</div>
<div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="../../d6/d2e/snsd__cache_8h.html#aec5afccfd1f4b753136b317781b6ce0c"> 150</a></span>&#160;<a class="code" href="../../dc/d3e/endianness_8h.html#a3e44b8503d7a90af675c81800fe6d275">INT_INFO</a> <a class="code" href="../../d6/d2e/snsd__cache_8h.html#aec5afccfd1f4b753136b317781b6ce0c">snsd_node_llist_hdr_iinfo</a> = { 1, { <a class="code" href="../../dc/d3e/endianness_8h.html#a66b75e81c28419f622f82e631e5da9bc">INT_TYPE_16BIT</a> }, { 0 }, { 1 } };</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 body of the pkt is:</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"> 154</span>&#160;<span class="comment"> * struct snsd_node_pack {</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="comment"> * u_int record[MAX_IP_INT];</span></div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="comment"> * char flags;</span></div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="comment"> * u_char weight;</span></div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="comment"> * } pack[hdr.nodes];</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"><a class="line" href="../../d6/d2e/snsd__cache_8h.html#a638250894ad6de2d54198fd796669681"> 160</a></span>&#160;<span class="preprocessor">#define SNSD_NODE_LLIST_PACK_SZ(head) (list_count((head))*SNSD_NODE_PACK_SZ \</span></div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="preprocessor"> + sizeof(struct snsd_node_llist_hdr))</span></div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; </div>
<div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="../../d7/dee/structsnsd__prio__llist__hdr.html"> 163</a></span>&#160;<span class="keyword">struct </span><a class="code" href="../../d7/dee/structsnsd__prio__llist__hdr.html">snsd_prio_llist_hdr</a></div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;{</div>
<div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="../../d7/dee/structsnsd__prio__llist__hdr.html#aaa3ed2b2fe3fae3201398a1a21b401ee"> 165</a></span>&#160; u_short <a class="code" href="../../d7/dee/structsnsd__prio__llist__hdr.html#aaa3ed2b2fe3fae3201398a1a21b401ee">count</a>; <span class="comment">/* number of structs packed in </span></div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="comment"> the body */</span></div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;}<a class="code" href="../../d6/d2e/snsd__cache_8h.html#af6e98af8fcdf87b2de8b58421b6b9515">_PACKED_</a>;</div>
<div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="../../d6/d2e/snsd__cache_8h.html#ae49e3e72630544a150de0b774e9849d1"> 168</a></span>&#160;<a class="code" href="../../dc/d3e/endianness_8h.html#a3e44b8503d7a90af675c81800fe6d275">INT_INFO</a> <a class="code" href="../../d6/d2e/snsd__cache_8h.html#ae49e3e72630544a150de0b774e9849d1">snsd_prio_llist_hdr_iinfo</a> = { 1, { <a class="code" href="../../dc/d3e/endianness_8h.html#a66b75e81c28419f622f82e631e5da9bc">INT_TYPE_16BIT</a> }, { 0 }, { 1 } };</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="comment"> * the body is:</span></div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="comment"> * snsd_prio_pack {</span></div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="comment"> * u_char prio;</span></div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="comment"> * char snsd_node_llist_pack[SNSD_NODE_LLIST_PACK_SZ];</span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="comment"> * } pack[hdr.count];</span></div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="../../d6/d2e/snsd__cache_8h.html#a49d9d23e468c4bd805fa1174f56b90cf"> 177</a></span>&#160;<span class="preprocessor">#define SNSD_PRIO_LLIST_PACK_SZ(head) \</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="preprocessor">({ \</span></div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="preprocessor"> snsd_prio *_p=(head); \</span></div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="preprocessor"> int _priosz=0; \</span></div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="preprocessor"> \</span></div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="preprocessor"> list_for(_p) { \</span></div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="preprocessor"> _priosz+=SNSD_NODE_LLIST_PACK_SZ(_p-&gt;node); \</span></div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="preprocessor"> _priosz+=SNSD_PRIO_PACK_SZ; \</span></div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="preprocessor"> } \</span></div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="preprocessor"> _priosz+=sizeof(struct snsd_prio_llist_hdr); \</span></div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;<span class="preprocessor"> _priosz; \</span></div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="preprocessor">})</span></div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;</div>
<div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="../../dc/dfd/structsnsd__service__llist__hdr.html"> 191</a></span>&#160;<span class="keyword">struct </span><a class="code" href="../../dc/dfd/structsnsd__service__llist__hdr.html">snsd_service_llist_hdr</a></div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;{</div>
<div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="../../dc/dfd/structsnsd__service__llist__hdr.html#a9658e82b7a097ba62af3f7f83dc76d92"> 193</a></span>&#160; u_short <a class="code" href="../../dc/dfd/structsnsd__service__llist__hdr.html#a9658e82b7a097ba62af3f7f83dc76d92">count</a>;</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;}<a class="code" href="../../d6/d2e/snsd__cache_8h.html#af6e98af8fcdf87b2de8b58421b6b9515">_PACKED_</a>;</div>
<div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="../../d6/d2e/snsd__cache_8h.html#aa1838205c533b0606da92a829716e9aa"> 195</a></span>&#160;<a class="code" href="../../dc/d3e/endianness_8h.html#a3e44b8503d7a90af675c81800fe6d275">INT_INFO</a> <a class="code" href="../../d6/d2e/snsd__cache_8h.html#aa1838205c533b0606da92a829716e9aa">snsd_service_llist_hdr_iinfo</a> = { 1, { <a class="code" href="../../dc/d3e/endianness_8h.html#a66b75e81c28419f622f82e631e5da9bc">INT_TYPE_16BIT</a> }, { 0 }, { 1 } };</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="comment"> * the body is:</span></div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="comment"> * u_short service;</span></div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="comment"> * u_char proto;</span></div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="comment"> * char snsd_prio_llist_pack[SNSD_PRIO_LLIST_PACK_SZ];</span></div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00202"></a><span class="lineno"><a class="line" href="../../d6/d2e/snsd__cache_8h.html#a730c0aa40611e0cdf4eacd8b1f8556cf"> 202</a></span>&#160;<span class="preprocessor">#define SNSD_SERVICE_LLIST_PACK_SZ(head) \</span></div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="preprocessor">({ \</span></div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="preprocessor"> snsd_service *_s=(head); \</span></div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="preprocessor"> int _srvsz=0; \</span></div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="preprocessor"> if(_s) { \</span></div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="preprocessor"> list_for(_s) { \</span></div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="preprocessor"> _srvsz+=SNSD_PRIO_LLIST_PACK_SZ(_s-&gt;prio); \</span></div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;<span class="preprocessor"> _srvsz+=SNSD_SERVICE_PACK_SZ; \</span></div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="preprocessor"> } \</span></div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="preprocessor"> _srvsz+=sizeof(struct snsd_service_llist_hdr); \</span></div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;<span class="preprocessor"> } \</span></div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="preprocessor"> _srvsz; \</span></div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<span class="preprocessor">})</span></div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div>
<div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="../../d6/d2e/snsd__cache_8h.html#adb98f2a1e340a0077a49f12e4e258f21"> 216</a></span>&#160;<span class="preprocessor">#define SNSD_SERVICE_SINGLE_PACK_SZ(head) \</span></div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;<span class="preprocessor">({ SNSD_SERVICE_PACK_SZ + \</span></div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="preprocessor"> SNSD_PRIO_LLIST_PACK_SZ((head)-&gt;prio); \</span></div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;<span class="preprocessor">})</span></div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; </div>
<div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="../../d6/d2e/snsd__cache_8h.html#a1113bbea419462cb4dafed23b525735f"> 221</a></span>&#160;<span class="preprocessor">#define SNSD_SERVICE_MAX_PACK_SZ \</span></div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;<span class="preprocessor">( ( (SNSD_NODE_PACK_SZ + SNSD_PRIO_PACK_SZ) * \</span></div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="preprocessor"> (SNSD_MAX_REC_SERV) ) + \</span></div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="preprocessor"> SNSD_SERVICE_PACK_SZ + \</span></div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="preprocessor"> sizeof(struct snsd_prio_llist_hdr) + \</span></div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="preprocessor"> sizeof(struct snsd_service_llist_hdr) \</span></div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="preprocessor">)</span></div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;</div>
<div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="../../d6/d2e/snsd__cache_8h.html#aea29e9ebccff286b801afdb6e6087745"> 229</a></span>&#160;<span class="preprocessor">#define SNSD_SERVICE_MAX_LLIST_PACK_SZ \</span></div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="preprocessor">(( SNSD_NODE_PACK_SZ + SNSD_PRIO_PACK_SZ + SNSD_SERVICE_PACK_SZ + \</span></div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="preprocessor"> sizeof(struct snsd_prio_llist_hdr))*SNSD_MAX_RECORDS + \</span></div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="preprocessor"> sizeof(struct snsd_service_llist_hdr) \</span></div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="preprocessor">)</span></div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;</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;<span class="comment"> * This array is used to associate a 8bit number to a protocol name.</span></div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="comment"> * The number is the position of the protocol name in this array.</span></div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="comment"> * For example: &quot;tcp&quot; is in the first position so its associated number is 1,</span></div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;<span class="comment"> * while the number for &quot;udp&quot; is 2.</span></div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="comment"> * Since we limit the proto number to an 8bit number, there can be only 255</span></div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="comment"> * protocols in this array.</span></div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00245"></a><span class="lineno"><a class="line" href="../../d6/d2e/snsd__cache_8h.html#a037a91b7ca0856bbc987e225d07c07e2"> 245</a></span>&#160;<span class="keyword">const</span> <span class="keyword">static</span> <span class="keywordtype">char</span> <a class="code" href="../../d6/d2e/snsd__cache_8h.html#a037a91b7ca0856bbc987e225d07c07e2">proto_str</a>[][5] =</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;{</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; { <span class="stringliteral">&quot;tcp&quot;</span> },</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; { <span class="stringliteral">&quot;udp&quot;</span> },</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; { 0 },</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;};</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;</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="comment"> * </span></div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="comment"> * * * Functions&#39; declaration * * *</span></div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d6/d2e/snsd__cache_8h.html#a471e906bab70cf24334d1149c252d02d">snsd_cache_init</a>(<span class="keywordtype">int</span> <a class="code" href="../../d7/de2/if_8c.html#a4417150d9f858949bd9ea8794995ebcc">family</a>);</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;u_char <a class="code" href="../../d6/d2e/snsd__cache_8h.html#a95a252ec0d0dbf78bfa343f45b75f8eb">str_to_snsd_proto</a>(<span class="keywordtype">char</span> *proto_name);</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="../../d6/d2e/snsd__cache_8h.html#aeace5c3c96fc082d343897b6b2e6f8fa">snsd_proto_to_str</a>(u_char proto);</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d6/d2e/snsd__cache_8h.html#a0175cddaa16e90f5c345578e31329192">str_to_snsd_service</a>(<span class="keywordtype">char</span> *str, <span class="keywordtype">int</span> *service, u_char *proto);</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="keyword">struct </span>servent *<a class="code" href="../../d6/d2e/snsd__cache_8h.html#a41805551af6182b573519e4fa19f34d7">snsd_service_to_str</a>(<span class="keywordtype">int</span> service, u_char proto, </div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordtype">char</span> **service_str, <span class="keywordtype">char</span> **<a class="code" href="../../d6/d2e/snsd__cache_8h.html#a037a91b7ca0856bbc987e225d07c07e2">proto_str</a>);</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<a class="code" href="../../dc/d52/structsnsd__service.html">snsd_service</a> *<a class="code" href="../../d6/d2e/snsd__cache_8h.html#ab38df9ae637ba49a0546f1cabcc618cb">snsd_find_service</a>(<a class="code" href="../../dc/d52/structsnsd__service.html">snsd_service</a> *sns, u_short service, u_char proto);</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<a class="code" href="../../dc/d52/structsnsd__service.html">snsd_service</a> *<a class="code" href="../../d6/d2e/snsd__cache_8h.html#a91158550b7ecfbacc616969af0b0e3f9">snsd_add_service</a>(<a class="code" href="../../dc/d52/structsnsd__service.html">snsd_service</a> **head, u_short service, u_char proto);</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<a class="code" href="../../d6/d31/structsnsd__prio.html">snsd_prio</a> *<a class="code" href="../../d6/d2e/snsd__cache_8h.html#af3e821a5273c77a70e336634382c695f">snsd_find_prio</a>(<a class="code" href="../../d6/d31/structsnsd__prio.html">snsd_prio</a> *snp, u_char prio);</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<a class="code" href="../../d6/d31/structsnsd__prio.html">snsd_prio</a> *<a class="code" href="../../d6/d2e/snsd__cache_8h.html#a1ae593116752066889521f8b62340dce">snsd_add_prio</a>(<a class="code" href="../../d6/d31/structsnsd__prio.html">snsd_prio</a> **head, u_char prio);</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<a class="code" href="../../dd/d94/structsnsd__node.html">snsd_node</a> *<a class="code" href="../../d6/d2e/snsd__cache_8h.html#a1c2a9996b7d7885857618c4b92f02426">snsd_find_node_by_record</a>(<a class="code" href="../../dd/d94/structsnsd__node.html">snsd_node</a> *snd, u_int record[<a class="code" href="../../d6/d4a/inet_8h.html#a70f8406c9556460a606bee45306c5630">MAX_IP_INT</a>]);</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;<a class="code" href="../../dd/d94/structsnsd__node.html">snsd_node</a> *<a class="code" href="../../d6/d2e/snsd__cache_8h.html#adde1a6d9c793272ccc091767f41523a2">snsd_add_node</a>(<a class="code" href="../../dd/d94/structsnsd__node.html">snsd_node</a> **head, u_short *counter, </div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; u_short max_records, u_int record[<a class="code" href="../../d6/d4a/inet_8h.html#a70f8406c9556460a606bee45306c5630">MAX_IP_INT</a>]);</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;<a class="code" href="../../dd/d94/structsnsd__node.html">snsd_node</a> *<a class="code" href="../../d6/d2e/snsd__cache_8h.html#a6f223de1e43e379d34a6321b904ea44d">snsd_add_mainip</a>(<a class="code" href="../../dc/d52/structsnsd__service.html">snsd_service</a> **head, u_short *counter,</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; u_short max_records, u_int record[<a class="code" href="../../d6/d4a/inet_8h.html#a70f8406c9556460a606bee45306c5630">MAX_IP_INT</a>]);</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d6/d2e/snsd__cache_8h.html#a22cc18982827b92b53a565cc47147a00">snsd_service_llist_del</a>(<a class="code" href="../../dc/d52/structsnsd__service.html">snsd_service</a> **head);</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d6/d2e/snsd__cache_8h.html#a446f79bf0a568ca1bd7dca03e8a33bda">snsd_record_del_selected</a>(<a class="code" href="../../dc/d52/structsnsd__service.html">snsd_service</a> **head, u_short *snd_counter, </div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <a class="code" href="../../dc/d52/structsnsd__service.html">snsd_service</a> *selected);</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d6/d2e/snsd__cache_8h.html#a6a72e6a4c792d596b34da0115a916606">snsd_pack_service</a>(<span class="keywordtype">char</span> *pack, <span class="keywordtype">size_t</span> free_sz, <a class="code" href="../../dc/d52/structsnsd__service.html">snsd_service</a> *service);</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;<a class="code" href="../../dc/d52/structsnsd__service.html">snsd_service</a> *<a class="code" href="../../d6/d2e/snsd__cache_8h.html#a35991d5fdd856d295f70b217e4eed072">snsd_unpack_service</a>(<span class="keywordtype">char</span> *pack, <span class="keywordtype">size_t</span> pack_sz, </div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordtype">size_t</span> *unpacked_sz, u_short *nodes_counter);</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d6/d2e/snsd__cache_8h.html#aea3f6c274a3770ca095f86632c94f03a">snsd_pack_all_services</a>(<span class="keywordtype">char</span> *pack, <span class="keywordtype">size_t</span> pack_sz, <a class="code" href="../../dc/d52/structsnsd__service.html">snsd_service</a> *head);</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;<a class="code" href="../../dc/d52/structsnsd__service.html">snsd_service</a> *<a class="code" href="../../d6/d2e/snsd__cache_8h.html#a36e689670df34e28fd0ff259a55c63c0">snsd_unpack_all_service</a>(<span class="keywordtype">char</span> *pack, <span class="keywordtype">size_t</span> pack_sz, </div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordtype">size_t</span> *unpacked_sz, u_short *nodes_counter);</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;<a class="code" href="../../dd/d94/structsnsd__node.html">snsd_node</a> *<a class="code" href="../../d6/d2e/snsd__cache_8h.html#a84725c660a472b86eb1cc3dc82fd8da1">snsd_choose_wrand</a>(<a class="code" href="../../dd/d94/structsnsd__node.html">snsd_node</a> *head);</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;<a class="code" href="../../d6/d31/structsnsd__prio.html">snsd_prio</a> *<a class="code" href="../../d6/d2e/snsd__cache_8h.html#accbf3958e25a5d44161b771de9bdebb8">snsd_highest_prio</a>(<a class="code" href="../../d6/d31/structsnsd__prio.html">snsd_prio</a> *head);</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;<a class="code" href="../../dd/d94/structsnsd__node.html">snsd_node</a> *<a class="code" href="../../d6/d2e/snsd__cache_8h.html#aa6e9429873d619682ae4d01c9017463d">snsd_find_mainip</a>(<a class="code" href="../../dc/d52/structsnsd__service.html">snsd_service</a> *sns);</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d6/d2e/snsd__cache_8h.html#ae98cfea459538a84971fa938d7d7b4c5">snsd_unset_all_flags</a>(<a class="code" href="../../dc/d52/structsnsd__service.html">snsd_service</a> *sns, u_char flag);</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;<a class="code" href="../../dc/d52/structsnsd__service.html">snsd_service</a> *<a class="code" href="../../d6/d2e/snsd__cache_8h.html#af314938a99eac1d0f265b5d2381d01ea">snsd_service_llist_copy</a>(<a class="code" href="../../dc/d52/structsnsd__service.html">snsd_service</a> *sns, <span class="keywordtype">int</span> service, </div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; u_char proto);</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d6/d2e/snsd__cache_8h.html#a0bd824b6550c076d5c18ba966553e7fd">snsd_merge_node</a>(<a class="code" href="../../dd/d94/structsnsd__node.html">snsd_node</a> **head, u_short *snsd_counter, <a class="code" href="../../dd/d94/structsnsd__node.html">snsd_node</a> *<span class="keyword">new</span>);</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d6/d2e/snsd__cache_8h.html#af908b3a5062fa0b46a508b29aee52105">snsd_node_llist_merge</a>(<a class="code" href="../../dd/d94/structsnsd__node.html">snsd_node</a> **dst, u_short *snsd_counter, <a class="code" href="../../dd/d94/structsnsd__node.html">snsd_node</a> *src);</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d6/d2e/snsd__cache_8h.html#a966854fa587f73c225f8bdcfd0d7264e">snsd_merge_prio</a>(<a class="code" href="../../d6/d31/structsnsd__prio.html">snsd_prio</a> **head, u_short *snsd_counter, <a class="code" href="../../d6/d31/structsnsd__prio.html">snsd_prio</a> *<span class="keyword">new</span>);</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d6/d2e/snsd__cache_8h.html#a767a463523b064153b129166749150dc">snsd_prio_llist_merge</a>(<a class="code" href="../../d6/d31/structsnsd__prio.html">snsd_prio</a> **dst, u_short *snsd_counter, <a class="code" href="../../d6/d31/structsnsd__prio.html">snsd_prio</a> *src);</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d6/d2e/snsd__cache_8h.html#a766b91d2ea6696e3c58fe4ce4f3f877c">snsd_merge_service</a>(<a class="code" href="../../dc/d52/structsnsd__service.html">snsd_service</a> **head, u_short *snsd_counter, </div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <a class="code" href="../../dc/d52/structsnsd__service.html">snsd_service</a> *<span class="keyword">new</span>);</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d6/d2e/snsd__cache_8h.html#a6555d8f1d85434e72f1b2f8dd32e46c4">snsd_service_llist_merge</a>(<a class="code" href="../../dc/d52/structsnsd__service.html">snsd_service</a> **dst, u_short *snsd_counter,</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <a class="code" href="../../dc/d52/structsnsd__service.html">snsd_service</a> *src);</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d6/d2e/snsd__cache_8h.html#a516ac9f73ef729804712b70731b52dfb">snsd_count_nodes</a>(<a class="code" href="../../dd/d94/structsnsd__node.html">snsd_node</a> *head);</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d6/d2e/snsd__cache_8h.html#a5f0235cc565970b1c88792ccbff8601d">snsd_count_prio_nodes</a>(<a class="code" href="../../d6/d31/structsnsd__prio.html">snsd_prio</a> *head);</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d6/d2e/snsd__cache_8h.html#a05c6106c53bbb0ceb3978ce6b068adbf">snsd_count_service_nodes</a>(<a class="code" href="../../dc/d52/structsnsd__service.html">snsd_service</a> *head);</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/*SNSD_H*/</span><span class="preprocessor"></span></div>
<div class="ttc" id="snsd__cache_8h_html_a36e689670df34e28fd0ff259a55c63c0"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#a36e689670df34e28fd0ff259a55c63c0">snsd_unpack_all_service</a></div><div class="ttdeci">snsd_service * snsd_unpack_all_service(char *pack, size_t pack_sz, size_t *unpacked_sz, u_short *nodes_counter)</div><div class="ttdef"><b>Definition:</b> snsd_cache.c:780</div></div>
<div class="ttc" id="snsd__cache_8h_html_a0bd824b6550c076d5c18ba966553e7fd"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#a0bd824b6550c076d5c18ba966553e7fd">snsd_merge_node</a></div><div class="ttdeci">void snsd_merge_node(snsd_node **head, u_short *snsd_counter, snsd_node *new)</div><div class="ttdef"><b>Definition:</b> snsd_cache.c:1045</div></div>
<div class="ttc" id="structsnsd__node_html_aa46d28f63103e7f039307cdf9cfbe1e5"><div class="ttname"><a href="../../dd/d94/structsnsd__node.html#aa46d28f63103e7f039307cdf9cfbe1e5">snsd_node::flags</a></div><div class="ttdeci">char flags</div><div class="ttdef"><b>Definition:</b> snsd_cache.h:105</div></div>
<div class="ttc" id="snsd__cache_8h_html_a84725c660a472b86eb1cc3dc82fd8da1"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#a84725c660a472b86eb1cc3dc82fd8da1">snsd_choose_wrand</a></div><div class="ttdeci">snsd_node * snsd_choose_wrand(snsd_node *head)</div><div class="ttdef"><b>Definition:</b> snsd_cache.c:865</div></div>
<div class="ttc" id="snsd__cache_8h_html_a35991d5fdd856d295f70b217e4eed072"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#a35991d5fdd856d295f70b217e4eed072">snsd_unpack_service</a></div><div class="ttdeci">snsd_service * snsd_unpack_service(char *pack, size_t pack_sz, size_t *unpacked_sz, u_short *nodes_counter)</div><div class="ttdef"><b>Definition:</b> snsd_cache.c:706</div></div>
<div class="ttc" id="snsd__cache_8h_html_aeace5c3c96fc082d343897b6b2e6f8fa"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#aeace5c3c96fc082d343897b6b2e6f8fa">snsd_proto_to_str</a></div><div class="ttdeci">const char * snsd_proto_to_str(u_char proto)</div><div class="ttdef"><b>Definition:</b> snsd_cache.c:62</div></div>
<div class="ttc" id="snsd__cache_8h_html_a5f0235cc565970b1c88792ccbff8601d"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#a5f0235cc565970b1c88792ccbff8601d">snsd_count_prio_nodes</a></div><div class="ttdeci">int snsd_count_prio_nodes(snsd_prio *head)</div><div class="ttdef"><b>Definition:</b> snsd_cache.c:839</div></div>
<div class="ttc" id="structsnsd__prio_html"><div class="ttname"><a href="../../d6/d31/structsnsd__prio.html">snsd_prio</a></div><div class="ttdef"><b>Definition:</b> snsd_cache.h:114</div></div>
<div class="ttc" id="snsd__cache_8h_html_a766b91d2ea6696e3c58fe4ce4f3f877c"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#a766b91d2ea6696e3c58fe4ce4f3f877c">snsd_merge_service</a></div><div class="ttdeci">void snsd_merge_service(snsd_service **head, u_short *snsd_counter, snsd_service *new)</div><div class="ttdef"><b>Definition:</b> snsd_cache.c:1081</div></div>
<div class="ttc" id="snsd__cache_8h_html_af6e98af8fcdf87b2de8b58421b6b9515"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#af6e98af8fcdf87b2de8b58421b6b9515">_PACKED_</a></div><div class="ttdeci">struct snsd_node_llist_hdr _PACKED_</div></div>
<div class="ttc" id="snsd__cache_8h_html_ae49e3e72630544a150de0b774e9849d1"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#ae49e3e72630544a150de0b774e9849d1">snsd_prio_llist_hdr_iinfo</a></div><div class="ttdeci">static const int_info snsd_prio_llist_hdr_iinfo</div><div class="ttdef"><b>Definition:</b> snsd_cache.h:168</div></div>
<div class="ttc" id="structsnsd__node_html"><div class="ttname"><a href="../../dd/d94/structsnsd__node.html">snsd_node</a></div><div class="ttdef"><b>Definition:</b> snsd_cache.h:97</div></div>
<div class="ttc" id="crypto_8h_html"><div class="ttname"><a href="../../da/da0/crypto_8h.html">crypto.h</a></div></div>
<div class="ttc" id="structsnsd__service_html_a7e2fd1526340d2f7ad5d8c16c488f873"><div class="ttname"><a href="../../dc/d52/structsnsd__service.html#a7e2fd1526340d2f7ad5d8c16c488f873">snsd_service::service</a></div><div class="ttdeci">u_short service</div><div class="ttdef"><b>Definition:</b> snsd_cache.h:129</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="endianness_8h_html"><div class="ttname"><a href="../../dc/d3e/endianness_8h.html">endianness.h</a></div></div>
<div class="ttc" id="snsd__cache_8h_html_aec5afccfd1f4b753136b317781b6ce0c"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#aec5afccfd1f4b753136b317781b6ce0c">snsd_node_llist_hdr_iinfo</a></div><div class="ttdeci">static const int_info snsd_node_llist_hdr_iinfo</div><div class="ttdef"><b>Definition:</b> snsd_cache.h:150</div></div>
<div class="ttc" id="structsnsd__prio__llist__hdr_html"><div class="ttname"><a href="../../d7/dee/structsnsd__prio__llist__hdr.html">snsd_prio_llist_hdr</a></div><div class="ttdef"><b>Definition:</b> snsd_cache.h:163</div></div>
<div class="ttc" id="snsd__cache_8h_html_a767a463523b064153b129166749150dc"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#a767a463523b064153b129166749150dc">snsd_prio_llist_merge</a></div><div class="ttdeci">void snsd_prio_llist_merge(snsd_prio **dst, u_short *snsd_counter, snsd_prio *src)</div><div class="ttdef"><b>Definition:</b> snsd_cache.c:1075</div></div>
<div class="ttc" id="snsd__cache_8h_html_a41805551af6182b573519e4fa19f34d7"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#a41805551af6182b573519e4fa19f34d7">snsd_service_to_str</a></div><div class="ttdeci">struct servent * snsd_service_to_str(int service, u_char proto, char **service_str, char **proto_str)</div><div class="ttdef"><b>Definition:</b> snsd_cache.c:120</div></div>
<div class="ttc" id="snsd__cache_8h_html_a471e906bab70cf24334d1149c252d02d"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#a471e906bab70cf24334d1149c252d02d">snsd_cache_init</a></div><div class="ttdeci">void snsd_cache_init(int family)</div><div class="ttdef"><b>Definition:</b> snsd_cache.c:35</div></div>
<div class="ttc" id="structsnsd__node__llist__hdr_html"><div class="ttname"><a href="../../dc/d42/structsnsd__node__llist__hdr.html">snsd_node_llist_hdr</a></div><div class="ttdef"><b>Definition:</b> snsd_cache.h:145</div></div>
<div class="ttc" id="structsnsd__node__llist__hdr_html_a3b849ba2ccd8b95dc56e37efa871e08b"><div class="ttname"><a href="../../dc/d42/structsnsd__node__llist__hdr.html#a3b849ba2ccd8b95dc56e37efa871e08b">snsd_node_llist_hdr::count</a></div><div class="ttdeci">u_short count</div><div class="ttdef"><b>Definition:</b> snsd_cache.h:147</div></div>
<div class="ttc" id="structsnsd__service_html_a237b003471437bdaa64c7ea5edf208ab"><div class="ttname"><a href="../../dc/d52/structsnsd__service.html#a237b003471437bdaa64c7ea5edf208ab">snsd_service::prio</a></div><div class="ttdeci">snsd_prio * prio</div><div class="ttdef"><b>Definition:</b> snsd_cache.h:133</div></div>
<div class="ttc" id="snsd__cache_8h_html_af908b3a5062fa0b46a508b29aee52105"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#af908b3a5062fa0b46a508b29aee52105">snsd_node_llist_merge</a></div><div class="ttdeci">void snsd_node_llist_merge(snsd_node **dst, u_short *snsd_counter, snsd_node *src)</div><div class="ttdef"><b>Definition:</b> snsd_cache.c:1057</div></div>
<div class="ttc" id="structsnsd__service_html_ae6ec59e5df0d02244257e779d821bdc8"><div class="ttname"><a href="../../dc/d52/structsnsd__service.html#ae6ec59e5df0d02244257e779d821bdc8">snsd_service::proto</a></div><div class="ttdeci">u_char proto</div><div class="ttdef"><b>Definition:</b> snsd_cache.h:130</div></div>
<div class="ttc" id="structsnsd__prio_html_a6001597d618b50fd4ce3bab81b395d17"><div class="ttname"><a href="../../d6/d31/structsnsd__prio.html#a6001597d618b50fd4ce3bab81b395d17">snsd_prio::node</a></div><div class="ttdeci">snsd_node * node</div><div class="ttdef"><b>Definition:</b> snsd_cache.h:120</div></div>
<div class="ttc" id="structsnsd__service__llist__hdr_html_a9658e82b7a097ba62af3f7f83dc76d92"><div class="ttname"><a href="../../dc/dfd/structsnsd__service__llist__hdr.html#a9658e82b7a097ba62af3f7f83dc76d92">snsd_service_llist_hdr::count</a></div><div class="ttdeci">u_short count</div><div class="ttdef"><b>Definition:</b> snsd_cache.h:193</div></div>
<div class="ttc" id="snsd__cache_8h_html_af314938a99eac1d0f265b5d2381d01ea"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#af314938a99eac1d0f265b5d2381d01ea">snsd_service_llist_copy</a></div><div class="ttdeci">snsd_service * snsd_service_llist_copy(snsd_service *sns, int service, u_char proto)</div><div class="ttdef"><b>Definition:</b> snsd_cache.c:1016</div></div>
<div class="ttc" id="llist_8c_html"><div class="ttname"><a href="../../d4/de1/llist_8c.html">llist.c</a></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="snsd__cache_8h_html_adde1a6d9c793272ccc091767f41523a2"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#adde1a6d9c793272ccc091767f41523a2">snsd_add_node</a></div><div class="ttdeci">snsd_node * snsd_add_node(snsd_node **head, u_short *counter, u_short max_records, u_int record[4])</div><div class="ttdef"><b>Definition:</b> snsd_cache.c:211</div></div>
<div class="ttc" id="snsd__cache_8h_html_a0175cddaa16e90f5c345578e31329192"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#a0175cddaa16e90f5c345578e31329192">str_to_snsd_service</a></div><div class="ttdeci">int str_to_snsd_service(char *str, int *service, u_char *proto)</div><div class="ttdef"><b>Definition:</b> snsd_cache.c:84</div></div>
<div class="ttc" id="snsd__cache_8h_html_a6555d8f1d85434e72f1b2f8dd32e46c4"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#a6555d8f1d85434e72f1b2f8dd32e46c4">snsd_service_llist_merge</a></div><div class="ttdeci">void snsd_service_llist_merge(snsd_service **dst, u_short *snsd_counter, snsd_service *src)</div><div class="ttdef"><b>Definition:</b> snsd_cache.c:1106</div></div>
<div class="ttc" id="snsd__cache_8h_html_aea3f6c274a3770ca095f86632c94f03a"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#aea3f6c274a3770ca095f86632c94f03a">snsd_pack_all_services</a></div><div class="ttdeci">int snsd_pack_all_services(char *pack, size_t pack_sz, snsd_service *head)</div><div class="ttdef"><b>Definition:</b> snsd_cache.c:746</div></div>
<div class="ttc" id="structsnsd__node_html_af01dca5b869edae35cd703e0872fc916"><div class="ttname"><a href="../../dd/d94/structsnsd__node.html#af01dca5b869edae35cd703e0872fc916">snsd_node::weight</a></div><div class="ttdeci">u_char weight</div><div class="ttdef"><b>Definition:</b> snsd_cache.h:108</div></div>
<div class="ttc" id="snsd__cache_8h_html_aa6e9429873d619682ae4d01c9017463d"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#aa6e9429873d619682ae4d01c9017463d">snsd_find_mainip</a></div><div class="ttdeci">snsd_node * snsd_find_mainip(snsd_service *sns)</div><div class="ttdef"><b>Definition:</b> snsd_cache.c:913</div></div>
<div class="ttc" id="snsd__cache_8h_html_a22cc18982827b92b53a565cc47147a00"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#a22cc18982827b92b53a565cc47147a00">snsd_service_llist_del</a></div><div class="ttdeci">void snsd_service_llist_del(snsd_service **head)</div><div class="ttdef"><b>Definition:</b> snsd_cache.c:295</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="snsd__cache_8h_html_a446f79bf0a568ca1bd7dca03e8a33bda"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#a446f79bf0a568ca1bd7dca03e8a33bda">snsd_record_del_selected</a></div><div class="ttdeci">void snsd_record_del_selected(snsd_service **head, u_short *snd_counter, snsd_service *selected)</div><div class="ttdef"><b>Definition:</b> snsd_cache.c:314</div></div>
<div class="ttc" id="structsnsd__node_html_a21229a7f6cfcbdc6aea237db889db016"><div class="ttname"><a href="../../dd/d94/structsnsd__node.html#a21229a7f6cfcbdc6aea237db889db016">snsd_node::pubkey</a></div><div class="ttdeci">RSA * pubkey</div><div class="ttdef"><b>Definition:</b> snsd_cache.h:104</div></div>
<div class="ttc" id="structsnsd__prio__llist__hdr_html_aaa3ed2b2fe3fae3201398a1a21b401ee"><div class="ttname"><a href="../../d7/dee/structsnsd__prio__llist__hdr.html#aaa3ed2b2fe3fae3201398a1a21b401ee">snsd_prio_llist_hdr::count</a></div><div class="ttdeci">u_short count</div><div class="ttdef"><b>Definition:</b> snsd_cache.h:165</div></div>
<div class="ttc" id="snsd__cache_8h_html_accbf3958e25a5d44161b771de9bdebb8"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#accbf3958e25a5d44161b771de9bdebb8">snsd_highest_prio</a></div><div class="ttdeci">snsd_prio * snsd_highest_prio(snsd_prio *head)</div><div class="ttdef"><b>Definition:</b> snsd_cache.c:894</div></div>
<div class="ttc" id="snsd__cache_8h_html_a95a252ec0d0dbf78bfa343f45b75f8eb"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#a95a252ec0d0dbf78bfa343f45b75f8eb">str_to_snsd_proto</a></div><div class="ttdeci">u_char str_to_snsd_proto(char *proto_name)</div><div class="ttdef"><b>Definition:</b> snsd_cache.c:48</div></div>
<div class="ttc" id="snsd__cache_8h_html_a1ae593116752066889521f8b62340dce"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#a1ae593116752066889521f8b62340dce">snsd_add_prio</a></div><div class="ttdeci">snsd_prio * snsd_add_prio(snsd_prio **head, u_char prio)</div><div class="ttdef"><b>Definition:</b> snsd_cache.c:177</div></div>
<div class="ttc" id="structsnsd__node_html_a421e15d148c6598e8dbe05c96a2611b4"><div class="ttname"><a href="../../dd/d94/structsnsd__node.html#a421e15d148c6598e8dbe05c96a2611b4">snsd_node::record</a></div><div class="ttdeci">u_int record[4]</div><div class="ttdef"><b>Definition:</b> snsd_cache.h:101</div></div>
<div class="ttc" id="structsnsd__service__llist__hdr_html"><div class="ttname"><a href="../../dc/dfd/structsnsd__service__llist__hdr.html">snsd_service_llist_hdr</a></div><div class="ttdef"><b>Definition:</b> snsd_cache.h:191</div></div>
<div class="ttc" id="snsd__cache_8h_html_a6f223de1e43e379d34a6321b904ea44d"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#a6f223de1e43e379d34a6321b904ea44d">snsd_add_mainip</a></div><div class="ttdeci">snsd_node * snsd_add_mainip(snsd_service **head, u_short *counter, u_short max_records, u_int record[4])</div><div class="ttdef"><b>Definition:</b> snsd_cache.c:252</div></div>
<div class="ttc" id="snsd__cache_8h_html_a1c2a9996b7d7885857618c4b92f02426"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#a1c2a9996b7d7885857618c4b92f02426">snsd_find_node_by_record</a></div><div class="ttdeci">snsd_node * snsd_find_node_by_record(snsd_node *snd, u_int record[4])</div><div class="ttdef"><b>Definition:</b> snsd_cache.c:192</div></div>
<div class="ttc" id="inet_8h_html"><div class="ttname"><a href="../../d6/d4a/inet_8h.html">inet.h</a></div></div>
<div class="ttc" id="snsd__cache_8h_html_aa1838205c533b0606da92a829716e9aa"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#aa1838205c533b0606da92a829716e9aa">snsd_service_llist_hdr_iinfo</a></div><div class="ttdeci">static const int_info snsd_service_llist_hdr_iinfo</div><div class="ttdef"><b>Definition:</b> snsd_cache.h:195</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="snsd__cache_8h_html_a966854fa587f73c225f8bdcfd0d7264e"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#a966854fa587f73c225f8bdcfd0d7264e">snsd_merge_prio</a></div><div class="ttdeci">void snsd_merge_prio(snsd_prio **head, u_short *snsd_counter, snsd_prio *new)</div><div class="ttdef"><b>Definition:</b> snsd_cache.c:1063</div></div>
<div class="ttc" id="snsd__cache_8h_html_ae98cfea459538a84971fa938d7d7b4c5"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#ae98cfea459538a84971fa938d7d7b4c5">snsd_unset_all_flags</a></div><div class="ttdeci">void snsd_unset_all_flags(snsd_service *sns, u_char flag)</div><div class="ttdef"><b>Definition:</b> snsd_cache.c:936</div></div>
<div class="ttc" id="snsd__cache_8h_html_a037a91b7ca0856bbc987e225d07c07e2"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#a037a91b7ca0856bbc987e225d07c07e2">proto_str</a></div><div class="ttdeci">static const char proto_str[][5]</div><div class="ttdef"><b>Definition:</b> snsd_cache.h:245</div></div>
<div class="ttc" id="snsd__cache_8h_html_a6a72e6a4c792d596b34da0115a916606"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#a6a72e6a4c792d596b34da0115a916606">snsd_pack_service</a></div><div class="ttdeci">int snsd_pack_service(char *pack, size_t free_sz, snsd_service *service)</div><div class="ttdef"><b>Definition:</b> snsd_cache.c:670</div></div>
<div class="ttc" id="llist_8c_html_ac92348e99cfae025c3893c07fee7b263"><div class="ttname"><a href="../../d4/de1/llist_8c.html#ac92348e99cfae025c3893c07fee7b263">LLIST_HDR</a></div><div class="ttdeci">#define LLIST_HDR(_struct)</div><div class="ttdef"><b>Definition:</b> llist.c:44</div></div>
<div class="ttc" id="snsd__cache_8h_html_a516ac9f73ef729804712b70731b52dfb"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#a516ac9f73ef729804712b70731b52dfb">snsd_count_nodes</a></div><div class="ttdeci">int snsd_count_nodes(snsd_node *head)</div><div class="ttdef"><b>Definition:</b> snsd_cache.c:834</div></div>
<div class="ttc" id="if_8c_html_a4417150d9f858949bd9ea8794995ebcc"><div class="ttname"><a href="../../d7/de2/if_8c.html#a4417150d9f858949bd9ea8794995ebcc">family</a></div><div class="ttdeci">int family</div><div class="ttdef"><b>Definition:</b> if.c:34</div></div>
<div class="ttc" id="snsd__cache_8h_html_af3e821a5273c77a70e336634382c695f"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#af3e821a5273c77a70e336634382c695f">snsd_find_prio</a></div><div class="ttdeci">snsd_prio * snsd_find_prio(snsd_prio *snp, u_char prio)</div><div class="ttdef"><b>Definition:</b> snsd_cache.c:169</div></div>
<div class="ttc" id="snsd__cache_8h_html_a05c6106c53bbb0ceb3978ce6b068adbf"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#a05c6106c53bbb0ceb3978ce6b068adbf">snsd_count_service_nodes</a></div><div class="ttdeci">int snsd_count_service_nodes(snsd_service *head)</div><div class="ttdef"><b>Definition:</b> snsd_cache.c:848</div></div>
<div class="ttc" id="structsnsd__prio_html_a3e1f0b00744b0d6077b89b3af1f146ee"><div class="ttname"><a href="../../d6/d31/structsnsd__prio.html#a3e1f0b00744b0d6077b89b3af1f146ee">snsd_prio::prio</a></div><div class="ttdeci">u_char prio</div><div class="ttdef"><b>Definition:</b> snsd_cache.h:118</div></div>
<div class="ttc" id="snsd__cache_8h_html_ab38df9ae637ba49a0546f1cabcc618cb"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#ab38df9ae637ba49a0546f1cabcc618cb">snsd_find_service</a></div><div class="ttdeci">snsd_service * snsd_find_service(snsd_service *sns, u_short service, u_char proto)</div><div class="ttdef"><b>Definition:</b> snsd_cache.c:141</div></div>
<div class="ttc" id="snsd__cache_8h_html_a91158550b7ecfbacc616969af0b0e3f9"><div class="ttname"><a href="../../d6/d2e/snsd__cache_8h.html#a91158550b7ecfbacc616969af0b0e3f9">snsd_add_service</a></div><div class="ttdeci">snsd_service * snsd_add_service(snsd_service **head, u_short service, u_char proto)</div><div class="ttdef"><b>Definition:</b> snsd_cache.c:152</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="../../d6/d2e/snsd__cache_8h.html">snsd_cache.h</a></li>
<li class="footer">Generated on Wed Feb 19 2014 14:19:08 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>