00001 /** 00002 \file nmDoxy.h 00003 00004 \brief Main page 00005 00006 */ 00007 00008 //////////////////////////////////////////////////////////////////////////////////// 00009 00010 /** 00011 \mainpage Programmer overview 00012 00013 Azinix is designed to be extensible. 00014 00015 The code base consists of approximately 30,000 lines of custom-written 00016 C code, in addition to the various libraries Azinix links to. 00017 Azinix's source code is organized as a set of packages; 00018 each is in a directory under <code>src</code>. The basic 00019 organization is as follows: 00020 00021 <ul> 00022 <li> <code>evl</code>: rule evaluation, action implementation 00023 <li> <code>pkt</code>: creation and manipulation 00024 <li> <code>rlp</code>: input parser 00025 <li> <code>q</code>: routines implementing queuing 00026 <li> <code>os</code>: OS specific code 00027 <li> <code>nm</code>: UI code, exports Azinix functions to Tcl 00028 <li> <code>util</code>: common data structures, utilities 00029 </ul> 00030 00031 The <code>util</code> package includes the following data structures: 00032 <code>array</code>, <code>heap</code>, <code>st</code> (hash), <code>util_int_array</code> (integer array), 00033 <code>ls</code> (list), <code>var_set</code> (bit-vector), and <code>bdd</code> (binary decision diagram). 00034 It also has macros and defines for min/max, maxint; code timing; random numbers; and 00035 safe memory allocation. Packet capture and injection are managed by the 00036 <code>pcap</code> and <code>libnet</code> libraries. The user interface is handled by <code>Tcl</code>. 00037 00038 The <code>ctags</code> system is very useful for browsing the code base. 00039 */