netsukuku/d7/d3b/gmap_8h_source.html

481 lines
93 KiB
HTML
Raw Permalink 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/gmap.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;">
2014-02-20 00:30:40 +00:00
<td id="projectlogo"><img alt="Logo" src="../../Logo_netsukuku.jpg"/></td>
<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('d7/d3b/gmap_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">gmap.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../d7/d3b/gmap_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 2004 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 GMAP_H</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#define GMAP_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="../../d4/de1/llist_8c.html">llist.c</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="../../dc/db7/map_8h.html">map.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"> 25</span>&#160;<span class="comment">/* * * Groupnode stuff * * */</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="../../d7/d3b/gmap_8h.html#a211c2d6de7a95aee1b7bc9eddb4d84eb"> 26</a></span>&#160;<span class="preprocessor">#define GMAP_ME MAP_ME </span><span class="comment">/*1*/</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="../../d7/d3b/gmap_8h.html#a0a0204f2d074a4f5e4527047fb668f67"> 27</a></span>&#160;<span class="preprocessor">#define GMAP_VOID MAP_VOID </span><span class="comment">/*(1&lt;&lt;1)*/</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="../../d7/d3b/gmap_8h.html#afc309771259c273aa3ffd6512468c10f"> 28</a></span>&#160;<span class="preprocessor">#define GMAP_HGNODE (1&lt;&lt;2) </span><span class="comment">/*Hooked Gnode. We already hooked at </span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> this gnode */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="../../d7/d3b/gmap_8h.html#acdf8209802fbbb0d3f55ebdde25d6d0a"> 30</a></span>&#160;<span class="preprocessor">#define GMAP_FULL (1&lt;&lt;3) </span><span class="comment">/*The gnode is full!! aaahh, run away!*/</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment">/* This is the holy external_map. Each struct corresponds to a groupnode. </span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> * This groupnode cointains MAXGROUPNODE nodes if we are at level 1 or </span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> * MAXGROUPNODE groups. The map is equal to the int_map, in fact, a map_node</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> * is embedded in a map_gnode. </span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> * This int_map uses the QSPN_MAP_STYLEII (see qspn.h). */</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="../../d5/d7c/structmap__gnode.html"> 37</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;{</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="comment">/* </span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> * The gnode_map starts here. Note that it is a normal map. (See map.h). </span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> * It is here, at the top of the struct to allow to manipulate a map_gnode</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> * as a map_node with the help of the magic cast. The cast is heavily </span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> * used in qspn.c</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="../../d5/d7c/structmap__gnode.html#a28b8b80755314195d353a43d316648b9"> 45</a></span>&#160; <a class="code" href="../../d6/d1c/structmap__node.html">map_node</a> <a class="code" href="../../d5/d7c/structmap__gnode.html#a28b8b80755314195d353a43d316648b9">g</a>;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; </div>
<div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="../../d5/d7c/structmap__gnode.html#ae20f2ce4db6f98b1c6b913f8c628b248"> 47</a></span>&#160; u_char <a class="code" href="../../d5/d7c/structmap__gnode.html#ae20f2ce4db6f98b1c6b913f8c628b248">flags</a>;</div>
<div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="../../d5/d7c/structmap__gnode.html#a85961f2464aac35e0aa4ea0361f50cda"> 48</a></span>&#160; u_char <a class="code" href="../../d5/d7c/structmap__gnode.html#a85961f2464aac35e0aa4ea0361f50cda">seeds</a>; <span class="comment">/*The number of active static nodes connected to this</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"> gnode minus one (the root_node is not counted).</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"> If seeds == MAXGROUPNODE-1, the gnode is full ^_^*/</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="../../d5/d7c/structmap__gnode.html#ab9cb12b409b99cd81557cd8e263c4086"> 51</a></span>&#160; u_int <a class="code" href="../../d5/d7c/structmap__gnode.html#ab9cb12b409b99cd81557cd8e263c4086">gcount</a>; <span class="comment">/*The total number of nodes which are inside this </span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"> gnode*/</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;} <a class="code" href="../../d5/d7c/structmap__gnode.html">map_gnode</a>;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div>
<div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="../../d7/d3b/gmap_8h.html#ad6b06d911f5b18d35c2bd47984d3d3aa"> 55</a></span>&#160;<a class="code" href="../../dc/d3e/endianness_8h.html#a3e44b8503d7a90af675c81800fe6d275">INT_INFO</a> <a class="code" href="../../d7/d3b/gmap_8h.html#ad6b06d911f5b18d35c2bd47984d3d3aa">map_gnode_iinfo</a> = { 1, </div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; { <a class="code" href="../../dc/d3e/endianness_8h.html#acc663d0291dd4a32c1dfbed3167bd58b">INT_TYPE_32BIT</a> }, </div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; { <a class="code" href="../../dc/db7/map_8h.html#aae4c391fae0062ecdbf53986751815d8">MAP_NODE_PACK_SZ</a>+<span class="keyword">sizeof</span>(u_char)*2 }, </div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; { 1 }</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; };</div>
<div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="../../d7/d3b/gmap_8h.html#a29d48fdddde42e5b365c5d1bb698577d"> 60</a></span>&#160;<span class="preprocessor">#define MAP_GNODE_PACK_SZ (MAP_NODE_PACK_SZ+sizeof(u_char)*2+sizeof(int))</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="comment"> * * * * Levels notes * * *</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment"> * </span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment"> * These are the levels of the external_map. Note that the 0 level is never used </span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"> * for the ext_map because it corresponds to the internal map. Btw the 0 level is </span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> * counted so the number of LEVELS includes it too. </span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> * But we have to add another extra level: the last exiled level. It is also never </span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> * used but it is vital, cause, its gnode 0 includes the entire Netsukuku, the other</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"> * gnodes aren&#39;t used, it is a mere symbol. We call it the unity level.</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"> * All the structs/arrays related to the external map, and the ext_map itself, don&#39;t</span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment"> * use the EXTRA_LEVELS, thus, they lack of the zero level. To retrieve the position </span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"> * in the array from the level the _EL macro must be used. In other words: </span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment"> * because the arrays goes from 0 to n-1 we refer to the levels as the arrays,</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment"> * so the level 1 is the level 0, the level 2 is the level 1, and so on.</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"> * These arrays/structs are: quadg.gnode, rblock, ext_map, qspn_gnode_count.</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"><a class="line" href="../../d7/d3b/gmap_8h.html#a5c55d8434f18c2856d670cf89fc17e86"> 80</a></span>&#160;<span class="preprocessor">#define ZERO_LEVEL 1</span></div>
<div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="../../d7/d3b/gmap_8h.html#a254f22434d32b414b9400b530615bb8f"> 81</a></span>&#160;<span class="preprocessor">#define UNITY_LEVEL 1</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="../../d7/d3b/gmap_8h.html#a9fd054315cc1d7bb3939ccf3983c1e96"> 82</a></span>&#160;<span class="preprocessor">#define EXTRA_LEVELS (ZERO_LEVEL + UNITY_LEVEL)</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment">/* To use the right level. */</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="../../d7/d3b/gmap_8h.html#a297073a7a6347499918a2a0d3aae97bc"> 84</a></span>&#160;<span class="preprocessor">#define _EL(level) ((level)-1)</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment">/* And to restore it. */</span></div>
<div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="../../d7/d3b/gmap_8h.html#ae892eb3a872e792ac0087e3a11884b22"> 86</a></span>&#160;<span class="preprocessor">#define _NL(level) ((level)+1)</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</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"> * Using MAXGROUPNODE = 2^8; IPV4_LEVELS = 3; ips = 2^32;</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment"> * ips/(MAXGROUPNODE^IPV4_LEVELS) == 256;</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"> * If we use IPV4_LEVELS = 3, we almost cover all the ips, but the division gives</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment"> * 256. So there are only 256 groups in the last level (3), in fact:</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"> * ips/(256 * (MAXGROUPNODE^3)) == 1</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment"> * And to include them we use the unity level, thus IPV4_LEVELS is equal to 3+1.</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"> * This means that the unity level is the one which has only one group node which includes</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"> * the entire network.</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"> * Sadly we cannot use all this ips, because there are the banned classes (MULTICAST,</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"> * ZERONET), the kernel will sput on us.</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"> * </span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment"> * For the ipv6 we have IPV6_LEVELS = 16, ips = 2^128; so:</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="comment"> * ips/(MAXGROUPNODE^16) == 1</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="../../d7/d3b/gmap_8h.html#ad8355d6f62ca1d2bc8e78829094b28f3"> 103</a></span>&#160;<span class="preprocessor">#define IPV4_LEVELS (2+EXTRA_LEVELS)</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div>
<div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="../../d7/d3b/gmap_8h.html#ac78e247462d4954ea1c49545d16e1fb5"> 105</a></span>&#160;<span class="preprocessor">#define IPV6_LEVELS (14+EXTRA_LEVELS)</span></div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div>
<div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="../../d7/d3b/gmap_8h.html#add784659439a8dd6b1423406171414d3"> 107</a></span>&#160;<span class="preprocessor">#define MAX_LEVELS IPV6_LEVELS</span></div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="preprocessor">#ifdef DEBUG</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="preprocessor">#define GET_LEVELS(family) \</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="preprocessor">({ \</span></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="preprocessor"> if((family) != AF_INET &amp;&amp; (family) != AF_INET6) \</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="preprocessor"> fatal(&quot;GET_LEVELS: family not specified!&quot;); \</span></div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="preprocessor"> (family) == AF_INET ? IPV4_LEVELS : IPV6_LEVELS; \</span></div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="preprocessor"> })</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="../../d7/d3b/gmap_8h.html#afcb5b51527474f3ae5545b19811ac717"> 116</a></span>&#160;<span class="preprocessor">#define GET_LEVELS(family) ({ (family)==AF_INET ? IPV4_LEVELS : IPV6_LEVELS; })</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div>
<div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="../../d7/d3b/gmap_8h.html#a07a1d6b6ce28045eabea2361751391fe"> 119</a></span>&#160;<span class="preprocessor">#define FAMILY_LVLS (GET_LEVELS(my_family))</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="comment">/* NODES_PER_LEVEL: returns the maximum number of nodes which can reside in</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="comment"> * a gnode of the `lvl&#39;th level */</span></div>
<div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="../../d7/d3b/gmap_8h.html#a061f6bc7d626764b8f75a485c22be921"> 123</a></span>&#160;<span class="preprocessor">#define NODES_PER_LEVEL(lvl) ((1&lt;&lt;(MAXGROUPNODE_BITS*(lvl))))</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"> 125</span>&#160;<span class="comment">/* Struct used to keep all the quadro_group ids of a node. (The node is part of this</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="comment"> * quadro groups) */</span></div>
<div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="../../d0/d3b/structquadro__group.html"> 127</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="../../d0/d3b/structquadro__group.html#a0fef75cd0374747ddd60971943af7ce2"> 128</a></span>&#160; u_char <a class="code" href="../../d0/d3b/structquadro__group.html#a0fef75cd0374747ddd60971943af7ce2">levels</a>; <span class="comment">/*How many levels we have*/</span></div>
<div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="../../d0/d3b/structquadro__group.html#af88e1094e881ac249e12361f137eb496"> 129</a></span>&#160; <span class="keywordtype">int</span> gid[<a class="code" href="../../d7/d3b/gmap_8h.html#add784659439a8dd6b1423406171414d3">MAX_LEVELS</a>]; <span class="comment">/*Group ids. Each element is the gid of the quadrogroup in the </span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment"> relative level. (ex: gid[n] is the gid of the quadropgroup a </span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="comment"> the n-th level)*/</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="../../d0/d3b/structquadro__group.html#ac57def74d2763bd9db42e76a34d297f5"> 132</a></span>&#160; <a class="code" href="../../d5/d7c/structmap__gnode.html">map_gnode</a> *gnode[<a class="code" href="../../d7/d3b/gmap_8h.html#add784659439a8dd6b1423406171414d3">MAX_LEVELS</a>-<a class="code" href="../../d7/d3b/gmap_8h.html#a5c55d8434f18c2856d670cf89fc17e86">ZERO_LEVEL</a>]; <span class="comment">/*Each element is a pointer to the relative</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="comment"> gnode in the ext_map.*/</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="../../d0/d3b/structquadro__group.html#aedd67bc3244500255846f131acb6fc5d"> 134</a></span>&#160; <a class="code" href="../../da/d1d/structinet__prefix.html">inet_prefix</a> ipstart[<a class="code" href="../../d7/d3b/gmap_8h.html#add784659439a8dd6b1423406171414d3">MAX_LEVELS</a>]; <span class="comment">/*The ipstart of each quadg.gid in their respective levels*/</span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;}<a class="code" href="../../d0/d3b/structquadro__group.html">quadro_group</a>;</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="comment">/* Note: this is the int_info of the a packed quadro_group struct, which</span></div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="comment"> * hasnt&#39;t the `map_gnode *gnode&#39; pointers. The ipstart structs must be also</span></div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="comment"> * packed with pack_inet_prefix() */</span></div>
<div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="../../d7/d3b/gmap_8h.html#aa79c86ddd0eaa54efb19b1cdb2949262"> 140</a></span>&#160;<a class="code" href="../../dc/d3e/endianness_8h.html#a3e44b8503d7a90af675c81800fe6d275">INT_INFO</a> <a class="code" href="../../d7/d3b/gmap_8h.html#aa79c86ddd0eaa54efb19b1cdb2949262">quadro_group_iinfo</a> = { 1, </div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; { <a class="code" href="../../dc/d3e/endianness_8h.html#acc663d0291dd4a32c1dfbed3167bd58b">INT_TYPE_32BIT</a> },</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; { <span class="keyword">sizeof</span>(u_char) },</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; { <a class="code" href="../../d7/d3b/gmap_8h.html#add784659439a8dd6b1423406171414d3">MAX_LEVELS</a> }</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="../../d7/d3b/gmap_8h.html#a6a42f7a3bdf073a26023976fb571f5c2"> 145</a></span>&#160;<span class="preprocessor">#define QUADRO_GROUP_PACK_SZ (sizeof(u_char) + sizeof(int)*MAX_LEVELS + \</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="preprocessor"> + INET_PREFIX_PACK_SZ * MAX_LEVELS)</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="comment">/*These are the flags passed to iptoquadg()*/</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="../../d7/d3b/gmap_8h.html#a81170b62e7fce27f5acca9134728817d"> 149</a></span>&#160;<span class="preprocessor">#define QUADG_IPSTART 1</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="../../d7/d3b/gmap_8h.html#a17f870b1f19010297dee952b007e276d"> 150</a></span>&#160;<span class="preprocessor">#define QUADG_GID (1&lt;&lt;1)</span></div>
<div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="../../d7/d3b/gmap_8h.html#aa89ecdeb2fc8270c7f4c76d3bba12656"> 151</a></span>&#160;<span class="preprocessor">#define QUADG_GNODE (1&lt;&lt;2)</span></div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="comment">/* This block is used to send the ext_map */</span></div>
<div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="../../d9/dbf/structext__map__hdr.html"> 154</a></span>&#160;<span class="keyword">struct </span><a class="code" href="../../d9/dbf/structext__map__hdr.html">ext_map_hdr</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="../../d9/dbf/structext__map__hdr.html#a0d1403e00ecef1ae619048a2a2cddc27"> 156</a></span>&#160; <span class="keywordtype">char</span> <a class="code" href="../../d9/dbf/structext__map__hdr.html#a0d1403e00ecef1ae619048a2a2cddc27">quadg</a>[<a class="code" href="../../d7/d3b/gmap_8h.html#a6a42f7a3bdf073a26023976fb571f5c2">QUADRO_GROUP_PACK_SZ</a>]; <span class="comment">/* The packed me.cur_quadg */</span></div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div>
<div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="../../d9/dbf/structext__map__hdr.html#a1927b71aa44e6451906f736fd10be5ed"> 158</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="../../d9/dbf/structext__map__hdr.html#a1927b71aa44e6451906f736fd10be5ed">ext_map_sz</a>; <span class="comment">/*It&#39;s the sum of all the gmaps_sz.</span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="comment"> The size of a single map is:</span></div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="comment"> (ext_map_sz/(MAP_GNODE_PACK_SZ*</span></div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="comment"> (quadg.levels-EXTRA_LEVELS)); */</span></div>
<div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="../../d9/dbf/structext__map__hdr.html#a4cff9fe89a34224e357fbc52dbd5c577"> 162</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="../../d9/dbf/structext__map__hdr.html#a4cff9fe89a34224e357fbc52dbd5c577">rblock_sz</a>[<a class="code" href="../../d7/d3b/gmap_8h.html#add784659439a8dd6b1423406171414d3">MAX_LEVELS</a>]; <span class="comment">/*The size of the rblock of each gmap*/</span></div>
<div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="../../d9/dbf/structext__map__hdr.html#ab9c76bad15f1c5a1b010ee736e7482bb"> 163</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="../../d9/dbf/structext__map__hdr.html#ab9c76bad15f1c5a1b010ee736e7482bb">total_rblock_sz</a>; <span class="comment">/*The sum of all rblock_sz*/</span></div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;}<a class="code" href="../../d7/d3b/gmap_8h.html#aa109fc3a5e6f57ca1dd1ea7d8ecef028">_PACKED_</a>;</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="comment">/* Note: You have to consider the quadro_group struct when convert between</span></div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="comment"> * endianness */</span></div>
<div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="../../d7/d3b/gmap_8h.html#af162095afa802d1123f17ca760d578a6"> 168</a></span>&#160;<a class="code" href="../../dc/d3e/endianness_8h.html#a3e44b8503d7a90af675c81800fe6d275">INT_INFO</a> <a class="code" href="../../d7/d3b/gmap_8h.html#af162095afa802d1123f17ca760d578a6">ext_map_hdr_iinfo</a> = { 3, </div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; { <a class="code" href="../../dc/d3e/endianness_8h.html#acc663d0291dd4a32c1dfbed3167bd58b">INT_TYPE_32BIT</a>, <a class="code" href="../../dc/d3e/endianness_8h.html#acc663d0291dd4a32c1dfbed3167bd58b">INT_TYPE_32BIT</a>, INT_TYPE_32BIT },</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; { <a class="code" href="../../d7/d3b/gmap_8h.html#a6a42f7a3bdf073a26023976fb571f5c2">QUADRO_GROUP_PACK_SZ</a>, </div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <a class="code" href="../../d7/d3b/gmap_8h.html#a6a42f7a3bdf073a26023976fb571f5c2">QUADRO_GROUP_PACK_SZ</a>+<span class="keyword">sizeof</span>(size_t),</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <a class="code" href="../../d7/d3b/gmap_8h.html#a6a42f7a3bdf073a26023976fb571f5c2">QUADRO_GROUP_PACK_SZ</a>+(<span class="keyword">sizeof</span>(<span class="keywordtype">size_t</span>)*(<a class="code" href="../../d7/d3b/gmap_8h.html#add784659439a8dd6b1423406171414d3">MAX_LEVELS</a>+1)) },</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; { 1, <a class="code" href="../../d7/d3b/gmap_8h.html#add784659439a8dd6b1423406171414d3">MAX_LEVELS</a>, 1 }</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; };</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;<span class="comment">/* The ext_map_block is:</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="comment"> * struct ext_map_hdr hdr;</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="comment"> * char ext_map[ext_map_sz];</span></div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="comment"> * char rnode_blocks[total_rblock_sz];</span></div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="../../d7/d3b/gmap_8h.html#a09ed3ce128307b0fcba5660b8be56226"> 181</a></span>&#160;<span class="preprocessor">#define EXT_MAP_BLOCK_SZ(ext_map_sz, rblock_sz) (sizeof(struct ext_map_hdr)+(ext_map_sz)+(rblock_sz))</span></div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="comment">/* </span></div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="comment"> * This struct is used by the root_node to describe all the rnodes which</span></div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="comment"> * doesn&#39;t belongs to our same gnode.</span></div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="../../dc/d1e/structext__rnode.html"> 187</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="../../dc/d1e/structext__rnode.html#a4b2dc533d08564d40ee1485c4c8c1bf6"> 188</a></span>&#160; <a class="code" href="../../d6/d1c/structmap__node.html">map_node</a> <a class="code" href="../../dc/d1e/structext__rnode.html#a4b2dc533d08564d40ee1485c4c8c1bf6">node</a>;</div>
<div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="../../dc/d1e/structext__rnode.html#adb31b33383f29ac9efc2aa533790cb8d"> 189</a></span>&#160; <a class="code" href="../../d0/d3b/structquadro__group.html">quadro_group</a> <a class="code" href="../../dc/d1e/structext__rnode.html#adb31b33383f29ac9efc2aa533790cb8d">quadg</a>; <span class="comment">/* quadg.gnode[level] may be set to 0</span></div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="comment"> * if that gnode doesn&#39;t belong to the</span></div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="comment"> * same upper level of me.cur_quadg:</span></div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="comment"> * quadg.gid[level+1] != me.cur_quadg.gid[level+1]</span></div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;}<a class="code" href="../../dc/d1e/structext__rnode.html">ext_rnode</a>;</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="comment">/*This cache keeps the list of all the ext_rnode used.*/</span></div>
<div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="../../dc/d3a/structext__rnode__cache.html"> 197</a></span>&#160;<span class="keyword">struct </span><a class="code" href="../../dc/d3a/structext__rnode__cache.html">ext_rnode_cache</a> {</div>
<div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="../../dc/d3a/structext__rnode__cache.html#a63891c73ddbffc42f719633bd5c80259"> 198</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/d3a/structext__rnode__cache.html">ext_rnode_cache</a>);</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div>
<div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="../../dc/d3a/structext__rnode__cache.html#a3d38942ef84b93cda36919888309aa9a"> 200</a></span>&#160; <a class="code" href="../../dc/d1e/structext__rnode.html">ext_rnode</a> *<a class="code" href="../../dc/d3a/structext__rnode__cache.html#a3d38942ef84b93cda36919888309aa9a">e</a>; <span class="comment">/*The pointer to the ext_rnode struct*/</span></div>
<div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="../../dc/d3a/structext__rnode__cache.html#a867d5dd513caa33ce2d91a102c2b60bc"> 201</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="../../dc/d3a/structext__rnode__cache.html#a867d5dd513caa33ce2d91a102c2b60bc">rnode_pos</a>; <span class="comment">/*The ext_rnode position in the </span></div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="comment"> array of rnodes of the root_node */</span></div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;};</div>
<div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="../../d7/d3b/gmap_8h.html#af1db8a998e4d71381bd4010e6b9629cc"> 204</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="../../dc/d3a/structext__rnode__cache.html">ext_rnode_cache</a> <a class="code" href="../../dc/d3a/structext__rnode__cache.html">ext_rnode_cache</a>;</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="comment">/* * * Functions&#39; declaration * * */</span></div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="../../d7/d3b/gmap_8h.html#a53379e1cde836bb503d6fbd74c1220ae">get_groups</a>(<span class="keywordtype">int</span> <a class="code" href="../../d7/de2/if_8c.html#a4417150d9f858949bd9ea8794995ebcc">family</a>, <span class="keywordtype">int</span> lvl);</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d7/d3b/gmap_8h.html#a9d8ba11143fad33a42fadeca1b089065">is_group_invalid</a>(<span class="keywordtype">int</span> *gids, <span class="keywordtype">int</span> gid, <span class="keywordtype">int</span> lvl, <span class="keywordtype">int</span> <a class="code" href="../../d7/de2/if_8c.html#a4417150d9f858949bd9ea8794995ebcc">family</a>);</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d7/d3b/gmap_8h.html#aae95738707e42a1fa222862d7ba558b3">pos_from_gnode</a>(<a class="code" href="../../d5/d7c/structmap__gnode.html">map_gnode</a> *gnode, <a class="code" href="../../d5/d7c/structmap__gnode.html">map_gnode</a> *map);</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<a class="code" href="../../d5/d7c/structmap__gnode.html">map_gnode</a> * <a class="code" href="../../d7/d3b/gmap_8h.html#a31edfce8493c6d503bff5f88a235e480">gnode_from_pos</a>(<span class="keywordtype">int</span> pos, <a class="code" href="../../d5/d7c/structmap__gnode.html">map_gnode</a> *map);</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d7/d3b/gmap_8h.html#aea98ff28b23a15bca09eb85401731d2d">rnodetoip</a>(u_int mapstart, u_int maprnode, <a class="code" href="../../da/d1d/structinet__prefix.html">inet_prefix</a> ipstart, <a class="code" href="../../da/d1d/structinet__prefix.html">inet_prefix</a> *ret);</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="../../d7/d3b/gmap_8h.html#aacfee10d52d3ce3e729b3cf6dca919a2">rnode_to_ipstr</a>(u_int mapstart, u_int maprnode, <a class="code" href="../../da/d1d/structinet__prefix.html">inet_prefix</a> ipstart);</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d7/d3b/gmap_8h.html#a94609b8ed9b174e8cd3c1a2b98b9006e">iptogid</a>(<a class="code" href="../../da/d1d/structinet__prefix.html">inet_prefix</a> *ip, <span class="keywordtype">int</span> level);</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d7/d3b/gmap_8h.html#a558e1bec08c2060b80372ac25cd8d8f2">iptogids</a>(<a class="code" href="../../da/d1d/structinet__prefix.html">inet_prefix</a> *ip, <span class="keywordtype">int</span> *gid, <span class="keywordtype">int</span> levels);</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d7/d3b/gmap_8h.html#a63189b04abdf98d1dc6c140fe91aa269">gidtoipstart</a>(<span class="keywordtype">int</span> *gid, u_char total_levels, u_char levels, <span class="keywordtype">int</span> <a class="code" href="../../d7/de2/if_8c.html#a4417150d9f858949bd9ea8794995ebcc">family</a>, </div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <a class="code" href="../../da/d1d/structinet__prefix.html">inet_prefix</a> *ip);</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d7/d3b/gmap_8h.html#ae70fabc2a38bc24442f78bcb1d862a24">iptoquadg</a>(<a class="code" href="../../da/d1d/structinet__prefix.html">inet_prefix</a> ip, <a class="code" href="../../d5/d7c/structmap__gnode.html">map_gnode</a> **ext_map, <a class="code" href="../../d0/d3b/structquadro__group.html">quadro_group</a> *qg, <span class="keywordtype">char</span> <a class="code" href="../../d7/de2/if_8c.html#ac8bf36fe0577cba66bccda3a6f7e80a4">flags</a>);</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d7/d3b/gmap_8h.html#a712f9eefa8f15b4f204a65bac1174532">quadg_setflags</a>(<a class="code" href="../../d0/d3b/structquadro__group.html">quadro_group</a> *qg, <span class="keywordtype">char</span> <a class="code" href="../../d7/de2/if_8c.html#ac8bf36fe0577cba66bccda3a6f7e80a4">flags</a>);</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d7/d3b/gmap_8h.html#a121827c920282564a37ac126f30e3675">quadg_free</a>(<a class="code" href="../../d0/d3b/structquadro__group.html">quadro_group</a> *qg);</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d7/d3b/gmap_8h.html#ab41b7252b226da503e056943b1ef82d2">quadg_destroy</a>(<a class="code" href="../../d0/d3b/structquadro__group.html">quadro_group</a> *qg);</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d7/d3b/gmap_8h.html#a5bc2aa3e30df69005e31aa45dc3786ca">gnode_inc_seeds</a>(<a class="code" href="../../d0/d3b/structquadro__group.html">quadro_group</a> *qg, <span class="keywordtype">int</span> level);</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d7/d3b/gmap_8h.html#ab2b65c474a9938a4a91ed1a3b761a109">gnode_dec_seeds</a>(<a class="code" href="../../d0/d3b/structquadro__group.html">quadro_group</a> *qg, <span class="keywordtype">int</span> level);</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d7/d3b/gmap_8h.html#a70ce90c9c90ffba9965aca7863badae2">pack_quadro_group</a>(<a class="code" href="../../d0/d3b/structquadro__group.html">quadro_group</a> *qg, <span class="keywordtype">char</span> *pack);</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d7/d3b/gmap_8h.html#aff77e100f9fda2f9320246f0be0eaa77">unpack_quadro_group</a>(<a class="code" href="../../d0/d3b/structquadro__group.html">quadro_group</a> *qg, <span class="keywordtype">char</span> *pack);</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d7/d3b/gmap_8h.html#a5024316574d49ea56d3eff9305a81f2d">free_gids</a>(<a class="code" href="../../d0/d3b/structquadro__group.html">quadro_group</a> *qg, <span class="keywordtype">int</span> level, <a class="code" href="../../d5/d7c/structmap__gnode.html">map_gnode</a> **ext_map, <a class="code" href="../../d6/d1c/structmap__node.html">map_node</a> *<a class="code" href="../../d5/ddf/qspn-empiric_8h.html#a275f0c34bee112fa32e4fc86586a19ad">int_map</a>);</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d7/d3b/gmap_8h.html#ac29e30431c4a784f975076039fdbf92b">void_gids</a>(<a class="code" href="../../d0/d3b/structquadro__group.html">quadro_group</a> *qg, <span class="keywordtype">int</span> level, <a class="code" href="../../d5/d7c/structmap__gnode.html">map_gnode</a> **ext_map, <a class="code" href="../../d6/d1c/structmap__node.html">map_node</a> *<a class="code" href="../../d5/ddf/qspn-empiric_8h.html#a275f0c34bee112fa32e4fc86586a19ad">int_map</a>);</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;<span class="keywordtype">int</span> <a class="code" href="../../d7/d3b/gmap_8h.html#ab9b8447a87c9c09e24de89e12d5f5387">random_ip</a>(<a class="code" href="../../da/d1d/structinet__prefix.html">inet_prefix</a> *ipstart, <span class="keywordtype">int</span> final_level, <span class="keywordtype">int</span> final_gid, </div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordtype">int</span> total_levels, <a class="code" href="../../d5/d7c/structmap__gnode.html">map_gnode</a> **ext_map, <span class="keywordtype">int</span> only_free_gnode, </div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <a class="code" href="../../da/d1d/structinet__prefix.html">inet_prefix</a> *new_ip, <span class="keywordtype">int</span> <a class="code" href="../../d6/d4a/inet_8h.html#a341f9d9a1b2ec097821be9b6cae697eb">my_family</a>);</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d7/d3b/gmap_8h.html#a9ce7a2f67926ff44e70a677107b6857a">gnodetoip</a>(<a class="code" href="../../d0/d3b/structquadro__group.html">quadro_group</a> *quadg, <span class="keywordtype">int</span> gnodeid, u_char level, <a class="code" href="../../da/d1d/structinet__prefix.html">inet_prefix</a> *ip);</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d7/d3b/gmap_8h.html#ab086e11ba60ae3d1d2e0c6a5562dd385">gids_cmp</a>(<span class="keywordtype">int</span> *gids_a, <span class="keywordtype">int</span> *gids_b, <span class="keywordtype">int</span> lvl, <span class="keywordtype">int</span> max_lvl);</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d7/d3b/gmap_8h.html#a74e73e73955e25a770ceeafe057f613c">quadg_gids_cmp</a>(<a class="code" href="../../d0/d3b/structquadro__group.html">quadro_group</a> a, <a class="code" href="../../d0/d3b/structquadro__group.html">quadro_group</a> b, <span class="keywordtype">int</span> lvl);</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d7/d3b/gmap_8h.html#a4fd466fa98af4fd37acf104d0d2f8710">ip_gids_cmp</a>(<a class="code" href="../../da/d1d/structinet__prefix.html">inet_prefix</a> a, <a class="code" href="../../da/d1d/structinet__prefix.html">inet_prefix</a> b, <span class="keywordtype">int</span> lvl);</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<a class="code" href="../../dc/d3a/structext__rnode__cache.html">ext_rnode_cache</a> *<a class="code" href="../../d7/d3b/gmap_8h.html#a0e267317ad1d78c28119452bafafa9ff">erc_find</a>(<a class="code" href="../../dc/d3a/structext__rnode__cache.html">ext_rnode_cache</a> *erc, <a class="code" href="../../dc/d1e/structext__rnode.html">ext_rnode</a> *e_rnode);</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d7/d3b/gmap_8h.html#a5da51071835b7efb88b09e81b106abd5">e_rnode_del</a>(<a class="code" href="../../dc/d3a/structext__rnode__cache.html">ext_rnode_cache</a> **erc_head, u_int *counter, <a class="code" href="../../dc/d3a/structext__rnode__cache.html">ext_rnode_cache</a> *erc);</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d7/d3b/gmap_8h.html#aaf77ae01a39e9df709e5d31fac86ea90">e_rnode_add</a>(<a class="code" href="../../dc/d3a/structext__rnode__cache.html">ext_rnode_cache</a> **erc, <a class="code" href="../../dc/d1e/structext__rnode.html">ext_rnode</a> *e_rnode, <span class="keywordtype">int</span> <a class="code" href="../../dc/d3a/structext__rnode__cache.html#a867d5dd513caa33ce2d91a102c2b60bc">rnode_pos</a>, u_int *counter);</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<a class="code" href="../../dc/d3a/structext__rnode__cache.html">ext_rnode_cache</a> *<a class="code" href="../../d7/d3b/gmap_8h.html#a70a4ef69ac33a21ea0a77123422cf552">e_rnode_init</a>(u_int *counter);</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d7/d3b/gmap_8h.html#a83ba076e88f05e88c2d941e5ef9338d3">e_rnode_free</a>(<a class="code" href="../../dc/d3a/structext__rnode__cache.html">ext_rnode_cache</a> **erc, u_int *counter);</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<a class="code" href="../../dc/d3a/structext__rnode__cache.html">ext_rnode_cache</a> *<a class="code" href="../../d7/d3b/gmap_8h.html#acd0185dfa7044c427401f12042fd5110">e_rnode_find</a>(<a class="code" href="../../dc/d3a/structext__rnode__cache.html">ext_rnode_cache</a> *erc, <a class="code" href="../../d0/d3b/structquadro__group.html">quadro_group</a> *qg, <span class="keywordtype">int</span> level);</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d7/d3b/gmap_8h.html#a02791b6224b7850e17c4f4143280d12b">erc_update_rnodepos</a>(<a class="code" href="../../dc/d3a/structext__rnode__cache.html">ext_rnode_cache</a> *erc, <a class="code" href="../../d6/d1c/structmap__node.html">map_node</a> *root_node, <span class="keywordtype">int</span> old_rnode_pos);</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d7/d3b/gmap_8h.html#acef61311d17f97ee51896948afab5433">erc_reorder_rnodepos</a>(<a class="code" href="../../dc/d3a/structext__rnode__cache.html">ext_rnode_cache</a> **erc, u_int *erc_counter, <a class="code" href="../../d6/d1c/structmap__node.html">map_node</a> *root_node);</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<a class="code" href="../../dc/d3a/structext__rnode__cache.html">ext_rnode_cache</a> *<a class="code" href="../../d7/d3b/gmap_8h.html#ae66a241d66f63a51912c7be857f38a9c">erc_find_gnode</a>(<a class="code" href="../../dc/d3a/structext__rnode__cache.html">ext_rnode_cache</a> *erc, <a class="code" href="../../d5/d7c/structmap__gnode.html">map_gnode</a> *gnode, u_char level);</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;<a class="code" href="../../d5/d7c/structmap__gnode.html">map_gnode</a> *<a class="code" href="../../d7/d3b/gmap_8h.html#a950d192a086b202a3c4553a72dcf66d6">init_gmap</a>(<span class="keywordtype">int</span> groups);</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d7/d3b/gmap_8h.html#a5582d4831a06617f28c66597f2fea4e9">reset_gmap</a>(<a class="code" href="../../d5/d7c/structmap__gnode.html">map_gnode</a> *gmap, <span class="keywordtype">int</span> groups);</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<a class="code" href="../../d5/d7c/structmap__gnode.html">map_gnode</a> **<a class="code" href="../../d7/d3b/gmap_8h.html#ad290f53e53f0cd9f609236f7f13f3927">init_extmap</a>(u_char levels, <span class="keywordtype">int</span> groups);</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d7/d3b/gmap_8h.html#a49d0277ea2e68801272a66675b78313a">free_extmap</a>(<a class="code" href="../../d5/d7c/structmap__gnode.html">map_gnode</a> **ext_map, u_char levels, <span class="keywordtype">int</span> groups);</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d7/d3b/gmap_8h.html#a9f69c857c921b197d373164f76807ad1">reset_extmap</a>(<a class="code" href="../../d5/d7c/structmap__gnode.html">map_gnode</a> **ext_map, u_char levels, <span class="keywordtype">int</span> groups);</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="keywordtype">int</span> <a class="code" href="../../d7/d3b/gmap_8h.html#a02f18a004fabe26b791362ba2023ceaa">g_rnode_find</a>(<a class="code" href="../../d5/d7c/structmap__gnode.html">map_gnode</a> *gnode, <a class="code" href="../../d5/d7c/structmap__gnode.html">map_gnode</a> *n);</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d7/d3b/gmap_8h.html#a86c08151ce74ba918204de55c1f6a89e">extmap_find_level</a>(<a class="code" href="../../d5/d7c/structmap__gnode.html">map_gnode</a> **ext_map, <a class="code" href="../../d5/d7c/structmap__gnode.html">map_gnode</a> *gnode, u_char max_level);</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d7/d3b/gmap_8h.html#acafc84089fdf2529d00ab56563a40170">gmap_node_del</a>(<a class="code" href="../../d5/d7c/structmap__gnode.html">map_gnode</a> *gnode);</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;<span class="keywordtype">int</span> <a class="code" href="../../d7/d3b/gmap_8h.html#a41d9aecf5682973b8145c8a78be84882">merge_ext_maps</a>(<a class="code" href="../../d5/d7c/structmap__gnode.html">map_gnode</a> **base, <a class="code" href="../../d5/d7c/structmap__gnode.html">map_gnode</a> **<span class="keyword">new</span>, <a class="code" href="../../d0/d3b/structquadro__group.html">quadro_group</a> base_root,</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <a class="code" href="../../d0/d3b/structquadro__group.html">quadro_group</a> new_root);</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="../../d7/d3b/gmap_8h.html#ad8f4d4e4386d76dbf897af6abcddb29f">verify_ext_map_hdr</a>(<span class="keyword">struct</span> <a class="code" href="../../d9/dbf/structext__map__hdr.html">ext_map_hdr</a> *emap_hdr, <a class="code" href="../../d0/d3b/structquadro__group.html">quadro_group</a> *quadg);</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d7/d3b/gmap_8h.html#a381c1da020ffc41bb25e9589b09773f6">free_extmap_rblock</a>(<a class="code" href="../../d8/d81/structmap__rnode.html">map_rnode</a> **rblock, u_char levels);</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d7/d3b/gmap_8h.html#a98445e1621693c83ca7af93d9e2fc722">pack_map_gnode</a>(<a class="code" href="../../d5/d7c/structmap__gnode.html">map_gnode</a> *gnode, <span class="keywordtype">char</span> *pack);</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d7/d3b/gmap_8h.html#a7bd57f7bec930295a7b6e629947bcb4c">unpack_map_gnode</a>(<a class="code" href="../../d5/d7c/structmap__gnode.html">map_gnode</a> *gnode, <span class="keywordtype">char</span> *pack);</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="keywordtype">char</span> *<a class="code" href="../../d7/d3b/gmap_8h.html#ad3b5a9f9d1ee7be33ede21a83479450c">pack_extmap</a>(<a class="code" href="../../d5/d7c/structmap__gnode.html">map_gnode</a> **ext_map, <span class="keywordtype">int</span> maxgroupnode, <a class="code" href="../../d0/d3b/structquadro__group.html">quadro_group</a> *quadg, <span class="keywordtype">size_t</span> *pack_sz);</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<a class="code" href="../../d5/d7c/structmap__gnode.html">map_gnode</a> **<a class="code" href="../../d7/d3b/gmap_8h.html#af1e8816c82f2eeaf6b8aee6d51e80709">unpack_extmap</a>(<span class="keywordtype">char</span> *package, <a class="code" href="../../d0/d3b/structquadro__group.html">quadro_group</a> *quadg);</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d7/d3b/gmap_8h.html#a4fe1c9b16dc69e8bc0b59126fcc76e4b">save_extmap</a>(<a class="code" href="../../d5/d7c/structmap__gnode.html">map_gnode</a> **ext_map, <span class="keywordtype">int</span> maxgroupnode, <a class="code" href="../../d0/d3b/structquadro__group.html">quadro_group</a> *quadg, <span class="keywordtype">char</span> *file);</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<a class="code" href="../../d5/d7c/structmap__gnode.html">map_gnode</a> **<a class="code" href="../../d7/d3b/gmap_8h.html#a750e03b9ac5f9f2e27bc0eb268a36f9b">load_extmap</a>(<span class="keywordtype">char</span> *file, <a class="code" href="../../d0/d3b/structquadro__group.html">quadro_group</a> *quadg);</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/*GMAP_H*/</span><span class="preprocessor"></span></div>
<div class="ttc" id="gmap_8h_html_a5582d4831a06617f28c66597f2fea4e9"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#a5582d4831a06617f28c66597f2fea4e9">reset_gmap</a></div><div class="ttdeci">void reset_gmap(map_gnode *gmap, int groups)</div><div class="ttdef"><b>Definition:</b> gmap.c:926</div></div>
<div class="ttc" id="gmap_8h_html_ab9b8447a87c9c09e24de89e12d5f5387"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#ab9b8447a87c9c09e24de89e12d5f5387">random_ip</a></div><div class="ttdeci">int random_ip(inet_prefix *ipstart, int final_level, int final_gid, int total_levels, map_gnode **ext_map, int only_free_gnode, inet_prefix *new_ip, int my_family)</div><div class="ttdef"><b>Definition:</b> gmap.c:531</div></div>
<div class="ttc" id="gmap_8h_html_a02791b6224b7850e17c4f4143280d12b"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#a02791b6224b7850e17c4f4143280d12b">erc_update_rnodepos</a></div><div class="ttdeci">void erc_update_rnodepos(ext_rnode_cache *erc, map_node *root_node, int old_rnode_pos)</div><div class="ttdef"><b>Definition:</b> gmap.c:779</div></div>
<div class="ttc" id="structext__rnode_html_a4b2dc533d08564d40ee1485c4c8c1bf6"><div class="ttname"><a href="../../dc/d1e/structext__rnode.html#a4b2dc533d08564d40ee1485c4c8c1bf6">ext_rnode::node</a></div><div class="ttdeci">map_node node</div><div class="ttdef"><b>Definition:</b> gmap.h:188</div></div>
<div class="ttc" id="gmap_8h_html_aff77e100f9fda2f9320246f0be0eaa77"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#aff77e100f9fda2f9320246f0be0eaa77">unpack_quadro_group</a></div><div class="ttdeci">void unpack_quadro_group(quadro_group *qg, char *pack)</div><div class="ttdef"><b>Definition:</b> gmap.c:350</div></div>
<div class="ttc" id="gmap_8h_html_a94609b8ed9b174e8cd3c1a2b98b9006e"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#a94609b8ed9b174e8cd3c1a2b98b9006e">iptogid</a></div><div class="ttdeci">int iptogid(inet_prefix *ip, int level)</div><div class="ttdef"><b>Definition:</b> gmap.c:159</div></div>
<div class="ttc" id="gmap_8h_html_acafc84089fdf2529d00ab56563a40170"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#acafc84089fdf2529d00ab56563a40170">gmap_node_del</a></div><div class="ttdeci">void gmap_node_del(map_gnode *gnode)</div><div class="ttdef"><b>Definition:</b> gmap.c:1023</div></div>
<div class="ttc" id="structext__map__hdr_html"><div class="ttname"><a href="../../d9/dbf/structext__map__hdr.html">ext_map_hdr</a></div><div class="ttdef"><b>Definition:</b> gmap.h:154</div></div>
<div class="ttc" id="gmap_8h_html_aa79c86ddd0eaa54efb19b1cdb2949262"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#aa79c86ddd0eaa54efb19b1cdb2949262">quadro_group_iinfo</a></div><div class="ttdeci">static const int_info quadro_group_iinfo</div><div class="ttdef"><b>Definition:</b> gmap.h:140</div></div>
<div class="ttc" id="structquadro__group_html_a0fef75cd0374747ddd60971943af7ce2"><div class="ttname"><a href="../../d0/d3b/structquadro__group.html#a0fef75cd0374747ddd60971943af7ce2">quadro_group::levels</a></div><div class="ttdeci">u_char levels</div><div class="ttdef"><b>Definition:</b> gmap.h:128</div></div>
<div class="ttc" id="gmap_8h_html_ad3b5a9f9d1ee7be33ede21a83479450c"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#ad3b5a9f9d1ee7be33ede21a83479450c">pack_extmap</a></div><div class="ttdeci">char * pack_extmap(map_gnode **ext_map, int maxgroupnode, quadro_group *quadg, size_t *pack_sz)</div><div class="ttdef"><b>Definition:</b> gmap.c:1320</div></div>
<div class="ttc" id="gmap_8h_html_a6a42f7a3bdf073a26023976fb571f5c2"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#a6a42f7a3bdf073a26023976fb571f5c2">QUADRO_GROUP_PACK_SZ</a></div><div class="ttdeci">#define QUADRO_GROUP_PACK_SZ</div><div class="ttdef"><b>Definition:</b> gmap.h:145</div></div>
<div class="ttc" id="gmap_8h_html_ad290f53e53f0cd9f609236f7f13f3927"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#ad290f53e53f0cd9f609236f7f13f3927">init_extmap</a></div><div class="ttdeci">map_gnode ** init_extmap(u_char levels, int groups)</div><div class="ttdef"><b>Definition:</b> gmap.c:941</div></div>
<div class="ttc" id="gmap_8h_html_a70ce90c9c90ffba9965aca7863badae2"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#a70ce90c9c90ffba9965aca7863badae2">pack_quadro_group</a></div><div class="ttdeci">void pack_quadro_group(quadro_group *qg, char *pack)</div><div class="ttdef"><b>Definition:</b> gmap.c:323</div></div>
<div class="ttc" id="gmap_8h_html_a5024316574d49ea56d3eff9305a81f2d"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#a5024316574d49ea56d3eff9305a81f2d">free_gids</a></div><div class="ttdeci">int free_gids(quadro_group *qg, int level, map_gnode **ext_map, map_node *int_map)</div><div class="ttdef"><b>Definition:</b> gmap.c:496</div></div>
<div class="ttc" id="gmap_8h_html_a712f9eefa8f15b4f204a65bac1174532"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#a712f9eefa8f15b4f204a65bac1174532">quadg_setflags</a></div><div class="ttdeci">void quadg_setflags(quadro_group *qg, char flags)</div><div class="ttdef"><b>Definition:</b> gmap.c:264</div></div>
<div class="ttc" id="gmap_8h_html_acef61311d17f97ee51896948afab5433"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#acef61311d17f97ee51896948afab5433">erc_reorder_rnodepos</a></div><div class="ttdeci">void erc_reorder_rnodepos(ext_rnode_cache **erc, u_int *erc_counter, map_node *root_node)</div><div class="ttdef"><b>Definition:</b> gmap.c:812</div></div>
<div class="ttc" id="structmap__rnode_html"><div class="ttname"><a href="../../d8/d81/structmap__rnode.html">map_rnode</a></div><div class="ttdef"><b>Definition:</b> map.h:74</div></div>
<div class="ttc" id="gmap_8h_html_a41d9aecf5682973b8145c8a78be84882"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#a41d9aecf5682973b8145c8a78be84882">merge_ext_maps</a></div><div class="ttdeci">int merge_ext_maps(map_gnode **base, map_gnode **new, quadro_group base_root, quadro_group new_root)</div><div class="ttdef"><b>Definition:</b> gmap.c:1113</div></div>
<div class="ttc" id="gmap_8h_html_a4fd466fa98af4fd37acf104d0d2f8710"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#a4fd466fa98af4fd37acf104d0d2f8710">ip_gids_cmp</a></div><div class="ttdeci">int ip_gids_cmp(inet_prefix a, inet_prefix b, int lvl)</div><div class="ttdef"><b>Definition:</b> gmap.c:709</div></div>
<div class="ttc" id="structext__rnode_html_adb31b33383f29ac9efc2aa533790cb8d"><div class="ttname"><a href="../../dc/d1e/structext__rnode.html#adb31b33383f29ac9efc2aa533790cb8d">ext_rnode::quadg</a></div><div class="ttdeci">quadro_group quadg</div><div class="ttdef"><b>Definition:</b> gmap.h:189</div></div>
<div class="ttc" id="gmap_8h_html_a9d8ba11143fad33a42fadeca1b089065"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#a9d8ba11143fad33a42fadeca1b089065">is_group_invalid</a></div><div class="ttdeci">int is_group_invalid(int *gids, int gid, int lvl, int family)</div><div class="ttdef"><b>Definition:</b> gmap.c:45</div></div>
<div class="ttc" id="gmap_8h_html_a0e267317ad1d78c28119452bafafa9ff"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#a0e267317ad1d78c28119452bafafa9ff">erc_find</a></div><div class="ttdeci">ext_rnode_cache * erc_find(ext_rnode_cache *erc, ext_rnode *e_rnode)</div><div class="ttdef"><b>Definition:</b> gmap.c:842</div></div>
<div class="ttc" id="structmap__node_html"><div class="ttname"><a href="../../d6/d1c/structmap__node.html">map_node</a></div><div class="ttdef"><b>Definition:</b> map.h:125</div></div>
<div class="ttc" id="structmap__gnode_html_ae20f2ce4db6f98b1c6b913f8c628b248"><div class="ttname"><a href="../../d5/d7c/structmap__gnode.html#ae20f2ce4db6f98b1c6b913f8c628b248">map_gnode::flags</a></div><div class="ttdeci">u_char flags</div><div class="ttdef"><b>Definition:</b> gmap.h:47</div></div>
<div class="ttc" id="gmap_8h_html_a31edfce8493c6d503bff5f88a235e480"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#a31edfce8493c6d503bff5f88a235e480">gnode_from_pos</a></div><div class="ttdeci">map_gnode * gnode_from_pos(int pos, map_gnode *map)</div><div class="ttdef"><b>Definition:</b> gmap.c:119</div></div>
<div class="ttc" id="gmap_8h_html_a63189b04abdf98d1dc6c140fe91aa269"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#a63189b04abdf98d1dc6c140fe91aa269">gidtoipstart</a></div><div class="ttdeci">void gidtoipstart(int *gid, u_char total_levels, u_char levels, int family, inet_prefix *ip)</div><div class="ttdef"><b>Definition:</b> gmap.c:203</div></div>
<div class="ttc" id="gmap_8h_html_add784659439a8dd6b1423406171414d3"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#add784659439a8dd6b1423406171414d3">MAX_LEVELS</a></div><div class="ttdeci">#define MAX_LEVELS</div><div class="ttdef"><b>Definition:</b> gmap.h:107</div></div>
<div class="ttc" id="gmap_8h_html_a7bd57f7bec930295a7b6e629947bcb4c"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#a7bd57f7bec930295a7b6e629947bcb4c">unpack_map_gnode</a></div><div class="ttdeci">void unpack_map_gnode(map_gnode *gnode, char *pack)</div><div class="ttdef"><b>Definition:</b> gmap.c:1291</div></div>
<div class="ttc" id="gmap_8h_html_a381c1da020ffc41bb25e9589b09773f6"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#a381c1da020ffc41bb25e9589b09773f6">free_extmap_rblock</a></div><div class="ttdeci">void free_extmap_rblock(map_rnode **rblock, u_char levels)</div><div class="ttdef"><b>Definition:</b> gmap.c:1248</div></div>
<div class="ttc" id="gmap_8h_html_aea98ff28b23a15bca09eb85401731d2d"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#aea98ff28b23a15bca09eb85401731d2d">rnodetoip</a></div><div class="ttdeci">void rnodetoip(u_int mapstart, u_int maprnode, inet_prefix ipstart, inet_prefix *ret)</div><div class="ttdef"><b>Definition:</b> gmap.c:130</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="structquadro__group_html"><div class="ttname"><a href="../../d0/d3b/structquadro__group.html">quadro_group</a></div><div class="ttdef"><b>Definition:</b> gmap.h:127</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="gmap_8h_html_a53379e1cde836bb503d6fbd74c1220ae"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#a53379e1cde836bb503d6fbd74c1220ae">get_groups</a></div><div class="ttdeci">int get_groups(int family, int lvl)</div><div class="ttdef"><b>Definition:</b> gmap.c:34</div></div>
<div class="ttc" id="gmap_8h_html_aaf77ae01a39e9df709e5d31fac86ea90"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#aaf77ae01a39e9df709e5d31fac86ea90">e_rnode_add</a></div><div class="ttdeci">void e_rnode_add(ext_rnode_cache **erc, ext_rnode *e_rnode, int rnode_pos, u_int *counter)</div><div class="ttdef"><b>Definition:</b> gmap.c:745</div></div>
<div class="ttc" id="gmap_8h_html_ab086e11ba60ae3d1d2e0c6a5562dd385"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#ab086e11ba60ae3d1d2e0c6a5562dd385">gids_cmp</a></div><div class="ttdeci">int gids_cmp(int *gids_a, int *gids_b, int lvl, int max_lvl)</div><div class="ttdef"><b>Definition:</b> gmap.c:679</div></div>
<div class="ttc" id="gmap_8h_html_a86c08151ce74ba918204de55c1f6a89e"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#a86c08151ce74ba918204de55c1f6a89e">extmap_find_level</a></div><div class="ttdeci">int extmap_find_level(map_gnode **ext_map, map_gnode *gnode, u_char max_level)</div><div class="ttdef"><b>Definition:</b> gmap.c:1006</div></div>
<div class="ttc" id="structext__map__hdr_html_a1927b71aa44e6451906f736fd10be5ed"><div class="ttname"><a href="../../d9/dbf/structext__map__hdr.html#a1927b71aa44e6451906f736fd10be5ed">ext_map_hdr::ext_map_sz</a></div><div class="ttdeci">size_t ext_map_sz</div><div class="ttdef"><b>Definition:</b> gmap.h:158</div></div>
<div class="ttc" id="gmap_8h_html_a5bc2aa3e30df69005e31aa45dc3786ca"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#a5bc2aa3e30df69005e31aa45dc3786ca">gnode_inc_seeds</a></div><div class="ttdeci">void gnode_inc_seeds(quadro_group *qg, int level)</div><div class="ttdef"><b>Definition:</b> gmap.c:291</div></div>
<div class="ttc" id="structmap__gnode_html_a85961f2464aac35e0aa4ea0361f50cda"><div class="ttname"><a href="../../d5/d7c/structmap__gnode.html#a85961f2464aac35e0aa4ea0361f50cda">map_gnode::seeds</a></div><div class="ttdeci">u_char seeds</div><div class="ttdef"><b>Definition:</b> gmap.h:48</div></div>
<div class="ttc" id="gmap_8h_html_aa109fc3a5e6f57ca1dd1ea7d8ecef028"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#aa109fc3a5e6f57ca1dd1ea7d8ecef028">_PACKED_</a></div><div class="ttdeci">struct ext_map_hdr _PACKED_</div></div>
<div class="ttc" id="gmap_8h_html_aae95738707e42a1fa222862d7ba558b3"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#aae95738707e42a1fa222862d7ba558b3">pos_from_gnode</a></div><div class="ttdeci">int pos_from_gnode(map_gnode *gnode, map_gnode *map)</div><div class="ttdef"><b>Definition:</b> gmap.c:109</div></div>
<div class="ttc" id="gmap_8h_html_a9ce7a2f67926ff44e70a677107b6857a"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#a9ce7a2f67926ff44e70a677107b6857a">gnodetoip</a></div><div class="ttdeci">void gnodetoip(quadro_group *quadg, int gnodeid, u_char level, inet_prefix *ip)</div><div class="ttdef"><b>Definition:</b> gmap.c:656</div></div>
<div class="ttc" id="structext__map__hdr_html_ab9c76bad15f1c5a1b010ee736e7482bb"><div class="ttname"><a href="../../d9/dbf/structext__map__hdr.html#ab9c76bad15f1c5a1b010ee736e7482bb">ext_map_hdr::total_rblock_sz</a></div><div class="ttdeci">size_t total_rblock_sz</div><div class="ttdef"><b>Definition:</b> gmap.h:163</div></div>
<div class="ttc" id="gmap_8h_html_af1e8816c82f2eeaf6b8aee6d51e80709"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#af1e8816c82f2eeaf6b8aee6d51e80709">unpack_extmap</a></div><div class="ttdeci">map_gnode ** unpack_extmap(char *package, quadro_group *quadg)</div><div class="ttdef"><b>Definition:</b> gmap.c:1382</div></div>
<div class="ttc" id="structext__rnode__cache_html"><div class="ttname"><a href="../../dc/d3a/structext__rnode__cache.html">ext_rnode_cache</a></div><div class="ttdef"><b>Definition:</b> gmap.h:197</div></div>
<div class="ttc" id="gmap_8h_html_a98445e1621693c83ca7af93d9e2fc722"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#a98445e1621693c83ca7af93d9e2fc722">pack_map_gnode</a></div><div class="ttdeci">void pack_map_gnode(map_gnode *gnode, char *pack)</div><div class="ttdef"><b>Definition:</b> gmap.c:1264</div></div>
<div class="ttc" id="gmap_8h_html_aacfee10d52d3ce3e729b3cf6dca919a2"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#aacfee10d52d3ce3e729b3cf6dca919a2">rnode_to_ipstr</a></div><div class="ttdeci">const char * rnode_to_ipstr(u_int mapstart, u_int maprnode, inet_prefix ipstart)</div><div class="ttdef"><b>Definition:</b> gmap.c:144</div></div>
<div class="ttc" id="structext__rnode__cache_html_a867d5dd513caa33ce2d91a102c2b60bc"><div class="ttname"><a href="../../dc/d3a/structext__rnode__cache.html#a867d5dd513caa33ce2d91a102c2b60bc">ext_rnode_cache::rnode_pos</a></div><div class="ttdeci">int rnode_pos</div><div class="ttdef"><b>Definition:</b> gmap.h:201</div></div>
<div class="ttc" id="gmap_8h_html_a4fe1c9b16dc69e8bc0b59126fcc76e4b"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#a4fe1c9b16dc69e8bc0b59126fcc76e4b">save_extmap</a></div><div class="ttdeci">int save_extmap(map_gnode **ext_map, int maxgroupnode, quadro_group *quadg, char *file)</div><div class="ttdef"><b>Definition:</b> gmap.c:1433</div></div>
<div class="ttc" id="gmap_8h_html_ae66a241d66f63a51912c7be857f38a9c"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#ae66a241d66f63a51912c7be857f38a9c">erc_find_gnode</a></div><div class="ttdeci">ext_rnode_cache * erc_find_gnode(ext_rnode_cache *erc, map_gnode *gnode, u_char level)</div><div class="ttdef"><b>Definition:</b> gmap.c:888</div></div>
<div class="ttc" id="structext__map__hdr_html_a0d1403e00ecef1ae619048a2a2cddc27"><div class="ttname"><a href="../../d9/dbf/structext__map__hdr.html#a0d1403e00ecef1ae619048a2a2cddc27">ext_map_hdr::quadg</a></div><div class="ttdeci">char quadg[(sizeof(u_char)+sizeof(int)*(14+(1+1))++(sizeof(u_char)+sizeof(u_short)+sizeof(u_char)+(4 *sizeof(int)))*(14+(1+1)))]</div><div class="ttdef"><b>Definition:</b> gmap.h:156</div></div>
<div class="ttc" id="gmap_8h_html_a5c55d8434f18c2856d670cf89fc17e86"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#a5c55d8434f18c2856d670cf89fc17e86">ZERO_LEVEL</a></div><div class="ttdeci">#define ZERO_LEVEL</div><div class="ttdef"><b>Definition:</b> gmap.h:80</div></div>
<div class="ttc" id="qspn-empiric_8h_html_a275f0c34bee112fa32e4fc86586a19ad"><div class="ttname"><a href="../../d5/ddf/qspn-empiric_8h.html#a275f0c34bee112fa32e4fc86586a19ad">int_map</a></div><div class="ttdeci">map_node * int_map</div><div class="ttdef"><b>Definition:</b> qspn-empiric.h:122</div></div>
<div class="ttc" id="structext__rnode__cache_html_a3d38942ef84b93cda36919888309aa9a"><div class="ttname"><a href="../../dc/d3a/structext__rnode__cache.html#a3d38942ef84b93cda36919888309aa9a">ext_rnode_cache::e</a></div><div class="ttdeci">ext_rnode * e</div><div class="ttdef"><b>Definition:</b> gmap.h:200</div></div>
<div class="ttc" id="gmap_8h_html_ae70fabc2a38bc24442f78bcb1d862a24"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#ae70fabc2a38bc24442f78bcb1d862a24">iptoquadg</a></div><div class="ttdeci">void iptoquadg(inet_prefix ip, map_gnode **ext_map, quadro_group *qg, char flags)</div><div class="ttdef"><b>Definition:</b> gmap.c:237</div></div>
<div class="ttc" id="gmap_8h_html_ad8f4d4e4386d76dbf897af6abcddb29f"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#ad8f4d4e4386d76dbf897af6abcddb29f">verify_ext_map_hdr</a></div><div class="ttdeci">int verify_ext_map_hdr(struct ext_map_hdr *emap_hdr, quadro_group *quadg)</div><div class="ttdef"><b>Definition:</b> gmap.c:1229</div></div>
<div class="ttc" id="inet_8h_html_a341f9d9a1b2ec097821be9b6cae697eb"><div class="ttname"><a href="../../d6/d4a/inet_8h.html#a341f9d9a1b2ec097821be9b6cae697eb">my_family</a></div><div class="ttdeci">int my_family</div><div class="ttdef"><b>Definition:</b> inet.h:141</div></div>
<div class="ttc" id="gmap_8h_html_af162095afa802d1123f17ca760d578a6"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#af162095afa802d1123f17ca760d578a6">ext_map_hdr_iinfo</a></div><div class="ttdeci">static const int_info ext_map_hdr_iinfo</div><div class="ttdef"><b>Definition:</b> gmap.h:168</div></div>
<div class="ttc" id="gmap_8h_html_a950d192a086b202a3c4553a72dcf66d6"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#a950d192a086b202a3c4553a72dcf66d6">init_gmap</a></div><div class="ttdeci">map_gnode * init_gmap(int groups)</div><div class="ttdef"><b>Definition:</b> gmap.c:910</div></div>
<div class="ttc" id="gmap_8h_html_ab2b65c474a9938a4a91ed1a3b761a109"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#ab2b65c474a9938a4a91ed1a3b761a109">gnode_dec_seeds</a></div><div class="ttdeci">void gnode_dec_seeds(quadro_group *qg, int level)</div><div class="ttdef"><b>Definition:</b> gmap.c:307</div></div>
<div class="ttc" id="gmap_8h_html_a70a4ef69ac33a21ea0a77123422cf552"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#a70a4ef69ac33a21ea0a77123422cf552">e_rnode_init</a></div><div class="ttdeci">ext_rnode_cache * e_rnode_init(u_int *counter)</div><div class="ttdef"><b>Definition:</b> gmap.c:724</div></div>
<div class="ttc" id="structext__map__hdr_html_a4cff9fe89a34224e357fbc52dbd5c577"><div class="ttname"><a href="../../d9/dbf/structext__map__hdr.html#a4cff9fe89a34224e357fbc52dbd5c577">ext_map_hdr::rblock_sz</a></div><div class="ttdeci">size_t rblock_sz[(14+(1+1))]</div><div class="ttdef"><b>Definition:</b> gmap.h:162</div></div>
<div class="ttc" id="gmap_8h_html_ac29e30431c4a784f975076039fdbf92b"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#ac29e30431c4a784f975076039fdbf92b">void_gids</a></div><div class="ttdeci">int void_gids(quadro_group *qg, int level, map_gnode **ext_map, map_node *int_map)</div><div class="ttdef"><b>Definition:</b> gmap.c:508</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="gmap_8h_html_a9f69c857c921b197d373164f76807ad1"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#a9f69c857c921b197d373164f76807ad1">reset_extmap</a></div><div class="ttdeci">void reset_extmap(map_gnode **ext_map, u_char levels, int groups)</div><div class="ttdef"><b>Definition:</b> gmap.c:983</div></div>
<div class="ttc" id="gmap_8h_html_a750e03b9ac5f9f2e27bc0eb268a36f9b"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#a750e03b9ac5f9f2e27bc0eb268a36f9b">load_extmap</a></div><div class="ttdeci">map_gnode ** load_extmap(char *file, quadro_group *quadg)</div><div class="ttdef"><b>Definition:</b> gmap.c:1456</div></div>
<div class="ttc" id="gmap_8h_html_a74e73e73955e25a770ceeafe057f613c"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#a74e73e73955e25a770ceeafe057f613c">quadg_gids_cmp</a></div><div class="ttdeci">int quadg_gids_cmp(quadro_group a, quadro_group b, int lvl)</div><div class="ttdef"><b>Definition:</b> gmap.c:696</div></div>
<div class="ttc" id="map_8h_html"><div class="ttname"><a href="../../dc/db7/map_8h.html">map.h</a></div></div>
<div class="ttc" id="gmap_8h_html_a121827c920282564a37ac126f30e3675"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#a121827c920282564a37ac126f30e3675">quadg_free</a></div><div class="ttdeci">void quadg_free(quadro_group *qg)</div><div class="ttdef"><b>Definition:</b> gmap.c:274</div></div>
<div class="ttc" id="gmap_8h_html_ad6b06d911f5b18d35c2bd47984d3d3aa"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#ad6b06d911f5b18d35c2bd47984d3d3aa">map_gnode_iinfo</a></div><div class="ttdeci">static const int_info map_gnode_iinfo</div><div class="ttdef"><b>Definition:</b> gmap.h:55</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="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="if_8c_html_ac8bf36fe0577cba66bccda3a6f7e80a4"><div class="ttname"><a href="../../d7/de2/if_8c.html#ac8bf36fe0577cba66bccda3a6f7e80a4">flags</a></div><div class="ttdeci">int flags</div><div class="ttdef"><b>Definition:</b> if.c:39</div></div>
<div class="ttc" id="gmap_8h_html_a49d0277ea2e68801272a66675b78313a"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#a49d0277ea2e68801272a66675b78313a">free_extmap</a></div><div class="ttdeci">void free_extmap(map_gnode **ext_map, u_char levels, int groups)</div><div class="ttdef"><b>Definition:</b> gmap.c:962</div></div>
<div class="ttc" id="map_8h_html_aae4c391fae0062ecdbf53986751815d8"><div class="ttname"><a href="../../dc/db7/map_8h.html#aae4c391fae0062ecdbf53986751815d8">MAP_NODE_PACK_SZ</a></div><div class="ttdeci">#define MAP_NODE_PACK_SZ</div><div class="ttdef"><b>Definition:</b> map.h:142</div></div>
<div class="ttc" id="gmap_8h_html_ab41b7252b226da503e056943b1ef82d2"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#ab41b7252b226da503e056943b1ef82d2">quadg_destroy</a></div><div class="ttdeci">void quadg_destroy(quadro_group *qg)</div><div class="ttdef"><b>Definition:</b> gmap.c:279</div></div>
<div class="ttc" id="gmap_8h_html_acd0185dfa7044c427401f12042fd5110"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#acd0185dfa7044c427401f12042fd5110">e_rnode_find</a></div><div class="ttdeci">ext_rnode_cache * e_rnode_find(ext_rnode_cache *erc, quadro_group *qg, int level)</div><div class="ttdef"><b>Definition:</b> gmap.c:867</div></div>
<div class="ttc" id="structext__rnode_html"><div class="ttname"><a href="../../dc/d1e/structext__rnode.html">ext_rnode</a></div><div class="ttdef"><b>Definition:</b> gmap.h:187</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="gmap_8h_html_a558e1bec08c2060b80372ac25cd8d8f2"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#a558e1bec08c2060b80372ac25cd8d8f2">iptogids</a></div><div class="ttdeci">void iptogids(inet_prefix *ip, int *gid, int levels)</div><div class="ttdef"><b>Definition:</b> gmap.c:185</div></div>
<div class="ttc" id="gmap_8h_html_a02f18a004fabe26b791362ba2023ceaa"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#a02f18a004fabe26b791362ba2023ceaa">g_rnode_find</a></div><div class="ttdeci">int g_rnode_find(map_gnode *gnode, map_gnode *n)</div><div class="ttdef"><b>Definition:</b> gmap.c:995</div></div>
<div class="ttc" id="structmap__gnode_html"><div class="ttname"><a href="../../d5/d7c/structmap__gnode.html">map_gnode</a></div><div class="ttdef"><b>Definition:</b> gmap.h:37</div></div>
<div class="ttc" id="gmap_8h_html_a83ba076e88f05e88c2d941e5ef9338d3"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#a83ba076e88f05e88c2d941e5ef9338d3">e_rnode_free</a></div><div class="ttdeci">void e_rnode_free(ext_rnode_cache **erc, u_int *counter)</div><div class="ttdef"><b>Definition:</b> gmap.c:730</div></div>
<div class="ttc" id="structmap__gnode_html_a28b8b80755314195d353a43d316648b9"><div class="ttname"><a href="../../d5/d7c/structmap__gnode.html#a28b8b80755314195d353a43d316648b9">map_gnode::g</a></div><div class="ttdeci">map_node g</div><div class="ttdef"><b>Definition:</b> gmap.h:45</div></div>
<div class="ttc" id="gmap_8h_html_a5da51071835b7efb88b09e81b106abd5"><div class="ttname"><a href="../../d7/d3b/gmap_8h.html#a5da51071835b7efb88b09e81b106abd5">e_rnode_del</a></div><div class="ttdeci">void e_rnode_del(ext_rnode_cache **erc_head, u_int *counter, ext_rnode_cache *erc)</div><div class="ttdef"><b>Definition:</b> gmap.c:756</div></div>
<div class="ttc" id="structmap__gnode_html_ab9cb12b409b99cd81557cd8e263c4086"><div class="ttname"><a href="../../d5/d7c/structmap__gnode.html#ab9cb12b409b99cd81557cd8e263c4086">map_gnode::gcount</a></div><div class="ttdeci">u_int gcount</div><div class="ttdef"><b>Definition:</b> gmap.h:51</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="../../d7/d3b/gmap_8h.html">gmap.h</a></li>
2014-02-20 00:30:40 +00:00
<li class="footer">Generated on Wed Feb 19 2014 16:28:40 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>