Packets: annotation facility
[senf.git] / Packets / Mainpage.dox
index 6ae0de7..817a455 100644 (file)
@@ -28,7 +28,8 @@
     \autotoc
 
     
-    \section packet_intro_arch Overall Architecture
+    \section packet_intro_arch Introduction
+    \seechapter \ref packet_arch
 
     The Packet library consists of several components:
     
     All these components work together to provide a hopefully simple and intuitive interface to
     packet parsing and creation.
 
-    \see \ref packet_arch
 
-
-    \section packet_intro_usage Using the packet library
+    \section packet_intro_usage Tutorial
+    \seechapter \ref packet_usage 
 
     This chapter discusses the usage of the packet library from a high level view. 
 
-    \see \ref packet_usage 
-
     
-    \section packet_intro_parser Parsing packet data
+    \section packet_intro_api The packet API
 
-    This chapter goes into more detail discussing the usage of packet parsers. 
-    
-    \li categorizing packet parsers
-    \li reading and writing values
-    \li using complex parsers
+    The packet library API is divided into three areas
 
-    \see \ref packetparser
+    \li the \ref senf::PacketData API for accessing the raw data container
+    \li the packet interpreter chain providing \ref packet_module
+    \li and \ref packetparser which provides access to protocol specific packet fields.
 
-    
+   
     \section protocolbundles Supported packet types (protocols)
 
     Each protocol bundle provides a collection of related concrete packet classes for a group of
 
     
     \section packet_intro_new Defining new packet types
+    \seechapter \ref packet_new
 
     The packet library provides the framework which allows to define arbitrary packet types. There
-    is quite some information needed to completely specify a specific type of paceket.
+    is quite some information needed to completely specify a specific type of packet.
 
-    \see \ref packet_new
  */
 
 /** \page packet_arch Overall Packet library Architecture
     udp.first<IPv4Packet>()            // throws InvalidPacketChainException
 
     udp.prev() == ip                   // true
-    udp.prev<EthernetPacket>()         // throws Inv
+    udp.prev<EthernetPacket>()         // throws InvalidPacketChainException
     \endcode
     
     \see \ref packet_module
 
     To access this information, we need to use a protocol specific handle, the senf::ConcretePacket
     which takes as a template argument the specific type of packet to be interpreted. This allows us
-    to easily interpret or create packets. Here an example on how to create a new Etheret / IP / UDP
+    to easily interpret or create packets. Here an example on how to create a new Ethernet / IP / UDP
     / Payload packet interpreter chain:
 
     \code
     eth->source()      = senf::MACAddress::from_string("00:11:22:33:44:55");
     eth->destination() = senf::MACAddress::from_string("00:11:22:33:44:66");
     
-    eth.finalize();
+    eth.finalizeAll();
     \endcode
 
     Again, realize, that \a eth, \a ip, \a udp and \a payload share the same internal packet
     eth->source()      = senf::MACAddress::from_string("00:11:22:33:44:55");
     eth->destination() = senf::MACAddress::from_string("00:11:22:33:44:66");
     
-    eth.finalize();
+    eth.finalizeAll();
     \endcode
 
     As seen above, packet fields are accessed using the <tt>-></tt> operator whereas other packet
-    facilities (like \c finalize()) are directly accessed using the member operator. The field
-    values are simply set using appropriately named accessors. As a last step, the \c finalize()
+    facilities (like \c finalizeAll()) are directly accessed using the member operator. The field
+    values are simply set using appropriately named accessors. As a last step, the \c finalizeAll()
     call will update all calculated fields (fields like next-protocol, header or payload length,
     checksums etc). Now the packet is ready. We may now send it out using a packet socket
 
     Each Record is a composite with the following relevant fields:
 
     <table class="fields">
-    <tr><td>nrSources</td><td>Integer</td><td>Number of sources in this record</td></tr>
+    <tr><td>nrOfSources</td><td>Integer</td><td>Number of sources in this record</td></tr>
     <tr><td>sources</td><td>Vector of IPv6 Addresses</td><td>Multicast sources</td></tr>
     </table>
     
     for (MLDv2ReportPacket::Parser::records_t::container::iterator i (records.begin());
          i != records.end(); ++i) {
         // Allocate a collection wrapper for the multicast address record
-        typedef MLDv2ReportPackte::Parser::records_t::value_type::sources_t Sources;
+        typedef MLDv2ReportPacket::Parser::records_t::value_type::sources_t Sources;
         Sources::container sources (i->sources());
         
         // Iterate over the sources in this record