<html>
<head>
<title>embedded IPsec - IPsec library</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="doxygen.css" type="text/css">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<table width="98%" border="0" align="center">
  <tr>
    <td>
      <h2 align="left"><img src="logo_small.gif" alt="embedded IPsec"> source 
        code documentation </h2>
<hr>

<!-- Generated by Doxygen 1.3.4 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
<h1>main.c File Reference</h1><hr><a name="_details"></a><h2>Detailed Description</h2>
Main file of structural tests. 
<p>
<dl compact><dt><b>Author:</b></dt><dd>Niklaus Schild &lt;<a href="mailto:n.schild@gmx.ch">n.schild@gmx.ch</a>&gt; <br>
 <p>
Christian Scheurer &lt;<a href="http://www.christianscheurer.ch">http://www.christianscheurer.ch</a>&gt; <br>
</dd></dl>
<b>OUTLINE:</b><p>
This module contains the main function where the structural test is executed. It basically loops over the test routines which are provided by the tested modules. Each module which needs to be tested must provide a function with the following interface: void (*function)(test_result *). Before a test for an appropriate module is performed, the function needs to be registred in the test_function_set array.<p>
<b>IMPLEMENTATION:</b><p>
The implementation uses an array of function pointers. The programmer needs to register the new test function statically in the main file of this module. During execution of the test, all functions registered in the test_function_set are executed.<p>
<b>NOTES:</b><p>
to add a test to this testing procedure you have to perform the following steps:<ol>
<li>declare the new test function as extern</li><li>add the test function and its name to the test_function_set</li><li>recompile and be assure that the tests return 'successful' or with 'not implemented'</li></ol>
<p>
This document is part of <em>embedded IPsec<br>
 Copyright (c) 2003 Niklaus Schild and Christian Scheurer, HTI Biel/Bienne<br>
 All rights reserved.</em><hr>

<p>
Definition in file <a class="el" href="main_8c-source.html">main.c</a>.
<p>
<code>#include "<a class="el" href="structural__test_8h-source.html">testing/structural/structural_test.h</a>"</code><br>
<code>#include "<a class="el" href="debug_8h-source.html">ipsec/debug.h</a>"</code><br>
<code>#include "<a class="el" href="util_8h-source.html">ipsec/util.h</a>"</code><br>

<p>
<a href="main_8c-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
<tr><td></td></tr>
<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structtest__set__struct.html">test_set_struct</a></td></tr>

<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="main_8c.html#a0">NR_OF_TESTFUNCTIONS</a>&nbsp;&nbsp;&nbsp;sizeof(<a class="el" href="main_8c.html#a2">test_function_set</a>)/sizeof(<a class="el" href="structtest__set__struct.html">test_set</a>)</td></tr>

<tr><td colspan=2><br><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="structtest__set__struct.html">test_set_struct</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="main_8c.html#a1">test_set</a></td></tr>

<tr><td colspan=2><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="main_8c.html#a3">serinit</a> (void)</td></tr>

<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="main_8c.html#a4">util_debug_test</a> (<a class="el" href="structtest__result__struct.html">test_result</a> *)</td></tr>

<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="main_8c.html#a5">des_test</a> (<a class="el" href="structtest__result__struct.html">test_result</a> *)</td></tr>

<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="main_8c.html#a6">md5_test</a> (<a class="el" href="structtest__result__struct.html">test_result</a> *)</td></tr>

<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="main_8c.html#a7">sha1_test</a> (<a class="el" href="structtest__result__struct.html">test_result</a> *)</td></tr>

<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="main_8c.html#a8">sa_test</a> (<a class="el" href="structtest__result__struct.html">test_result</a> *)</td></tr>

<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="main_8c.html#a9">ah_test</a> (<a class="el" href="structtest__result__struct.html">test_result</a> *)</td></tr>

<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="main_8c.html#a10">esp_test</a> (<a class="el" href="structtest__result__struct.html">test_result</a> *)</td></tr>

<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="main_8c.html#a11">main</a> (void)</td></tr>

<tr><td colspan=2><br><h2>Variables</h2></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="structtest__set__struct.html">test_set</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="main_8c.html#a2">test_function_set</a> []</td></tr>

</table>
<hr><h2>Define Documentation</h2>
<a class="anchor" name="a0" doxytag="main.c::NR_OF_TESTFUNCTIONS" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> #define NR_OF_TESTFUNCTIONS&nbsp;&nbsp;&nbsp;sizeof(<a class="el" href="main_8c.html#a2">test_function_set</a>)/sizeof(<a class="el" href="structtest__set__struct.html">test_set</a>)
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
defines the number of test functions 
<p>
Definition at line <a class="el" href="main_8c-source.html#l00095">95</a> of file <a class="el" href="main_8c-source.html">main.c</a>.    </td>
  </tr>
</table>
<hr><h2>Typedef Documentation</h2>
<a class="anchor" name="a1" doxytag="main.c::test_set" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> typedef struct <a class="el" href="structtest__set__struct.html">test_set_struct</a>  <a class="el" href="structtest__set__struct.html">test_set</a>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
    </td>
  </tr>
</table>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="a9" doxytag="main.c::ah_test" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void ah_test </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structtest__result__struct.html">test_result</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>global_results</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Main test function for the AH tests. It does nothing but calling the subtests one after the other. 
<p>
Definition at line <a class="el" href="ah__test_8c-source.html#l00181">181</a> of file <a class="el" href="ah__test_8c-source.html">ah_test.c</a>.    </td>
  </tr>
</table>
<a class="anchor" name="a5" doxytag="main.c::des_test" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void des_test </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structtest__result__struct.html">test_result</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>global_results</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Main test function for the DES/3DES CBC tests. It does nothing but calling the subtests one after the other. 
<p>
Definition at line <a class="el" href="des__test_8c-source.html#l00219">219</a> of file <a class="el" href="des__test_8c-source.html">des_test.c</a>.    </td>
  </tr>
</table>
<a class="anchor" name="a10" doxytag="main.c::esp_test" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void esp_test </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structtest__result__struct.html">test_result</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>global_results</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Main test function for the ESP tests. It does nothing but calling the subtests one after the other. 
<p>
Definition at line <a class="el" href="esp__test_8c-source.html#l00355">355</a> of file <a class="el" href="esp__test_8c-source.html">esp_test.c</a>.    </td>
  </tr>
</table>
<a class="anchor" name="a11" doxytag="main.c::main" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void main </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">void&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Executes the structural testing framework.<p>
<dl compact><dt><b>Returns:</b></dt><dd>void </dd></dl>

<p>
Definition at line <a class="el" href="main_8c-source.html#l00103">103</a> of file <a class="el" href="main_8c-source.html">main.c</a>.    </td>
  </tr>
</table>
<a class="anchor" name="a6" doxytag="main.c::md5_test" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void md5_test </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structtest__result__struct.html">test_result</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>global_results</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Main testfunction for the MD5 tests. It does nothing but calling the subtests one after the other. 
<p>
Definition at line <a class="el" href="md5__test_8c-source.html#l00218">218</a> of file <a class="el" href="md5__test_8c-source.html">md5_test.c</a>.    </td>
  </tr>
</table>
<a class="anchor" name="a8" doxytag="main.c::sa_test" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void sa_test </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structtest__result__struct.html">test_result</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>global_results</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Main test function for the SA tests. It does nothing but calling the subtests one after the other. 
<p>
Definition at line <a class="el" href="sa__test_8c-source.html#l00887">887</a> of file <a class="el" href="sa__test_8c-source.html">sa_test.c</a>.    </td>
  </tr>
</table>
<a class="anchor" name="a3" doxytag="main.c::serinit" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void serinit </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">void&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
    </td>
  </tr>
</table>
<a class="anchor" name="a7" doxytag="main.c::sha1_test" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void sha1_test </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structtest__result__struct.html">test_result</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>global_results</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Main test function for the SHA1 tests. It does nothing but calling the subtests one after the other. 
<p>
Definition at line <a class="el" href="sha1__test_8c-source.html#l00268">268</a> of file <a class="el" href="sha1__test_8c-source.html">sha1_test.c</a>.    </td>
  </tr>
</table>
<a class="anchor" name="a4" doxytag="main.c::util_debug_test" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void util_debug_test </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structtest__result__struct.html">test_result</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>global_results</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Test function for all the log functions (Note: some of these tests are commented out by default to make the log output more uniform) 
<p>
Definition at line <a class="el" href="util__test_8c-source.html#l00117">117</a> of file <a class="el" href="util__test_8c-source.html">util_test.c</a>.    </td>
  </tr>
</table>
<hr><h2>Variable Documentation</h2>
<a class="anchor" name="a2" doxytag="main.c::test_function_set" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="structtest__set__struct.html">test_set</a> <a class="el" href="main_8c.html#a2">test_function_set</a>[]
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
<b>Initial value:</b><div class="fragment"><pre> 
{
                        { <a class="code" href="util__test_8c.html#a1">util_debug_test</a>,      <span class="stringliteral">"util_debug_test"</span>       },
                        { <a class="code" href="des__test_8c.html#a2">des_test</a>,             <span class="stringliteral">"des_test"</span>                      },
                        { <a class="code" href="md5__test_8c.html#a4">md5_test</a>,             <span class="stringliteral">"md5_test"</span>                      }, 
                        { <a class="code" href="sha1__test_8c.html#a3">sha1_test</a>,            <span class="stringliteral">"sha1_test"</span>                     },
                        { <a class="code" href="sa__test_8c.html#a28">sa_test</a>,                      <span class="stringliteral">"sa_test"</span>                       },
                        { <a class="code" href="ah__test_8c.html#a2">ah_test</a>,                      <span class="stringliteral">"ah_test"</span>                       },
                        { <a class="code" href="esp__test_8c.html#a9">esp_test</a>,                     <span class="stringliteral">"esp_test"</span>                      }
}
</pre></div>
<p>
Definition at line <a class="el" href="main_8c-source.html#l00084">84</a> of file <a class="el" href="main_8c-source.html">main.c</a>.    </td>
  </tr>
</table>
	</td>
  </tr>
</table>
<hr>
<div align="center">Copyright 2003 by Christian Scheurer and Niklaus Schild</div>
</html>