Ignore:
Timestamp:
Mar 27, 2007 11:29:27 PM (17 years ago)
Author:
bennylp
Message:

Created doxygen documentation for PJNATH

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjnath/include/pjnath/types.h

    r1101 r1110  
    2929 
    3030/** 
    31  * @defgroup PJNATH NAT Helper Library 
     31 * @defgroup PJNATH NAT Traversal Helper Library 
    3232 * @{ 
    3333 */ 
     
    5252 
    5353/** 
    54  * @mainpage NAT Helper Library 
    55  * 
    56  * \n 
    57  * \n 
    58  * \n 
    59  * This is the documentation of PJNATH, an auxiliary library providing 
    60  * NAT helper functionalities such as STUN and ICE. 
    61  *  
    62  * Please go to the <A HREF="modules.htm"><B>Modules</B></A> page for list 
    63  * of modules. 
    64  * 
     54 * @mainpage PJNATH - Open Source STUN, TURN, and ICE Library 
     55 * 
     56 * \n 
     57 * This is the documentation of PJNATH, an Open Source library providing 
     58 * NAT traversal helper functionalities by using standard based protocols  
     59 * such as: 
     60 *  - <b>STUN</b> (Session Traversal Utilities), 
     61 *  - <b>TURN</b> (Obtaining Relay Addresses from STUN) 
     62 *  - <b>ICE</b> (Interactive Connectivity Establishment). 
     63 *  
     64 * The following sections will give a short overview about the protocols 
     65 * supported by this library, and how they are implemented in PJNATH. 
     66 * 
     67 * \n 
     68 
     69 * \section PJNATH_STUN STUN Protocol Library 
     70 * 
     71 * Session Traversal Utilities (STUN, or previously known as Simple  
     72 * Traversal of User Datagram Protocol (UDP) Through Network Address  
     73 * Translators (NAT)s), was previously released as IETF standard 
     74 * <A HREF="http://www.ietf.org/rfc/rfc3489.txt">RFC 3489</A>, but since 
     75 * then it has been revised into the following: 
     76 *  - <A HREF="http://www.ietf.org/internet-drafts/draft-ietf-behave-rfc3489bis-06.txt"> 
     77 *    <B>draft-ietf-behave-rfc3489bis-06</b></A> for the main STUN  
     78 *    specification, 
     79 *  - <A HREF="http://www.ietf.org/internet-drafts/draft-ietf-behave-turn-03.txt"> 
     80 *    <B>draft-ietf-behave-turn-03</B></A> for TURN usage of STUN, 
     81 *  - and several other drafts explaining other STUN usages. 
     82 *  
     83 * The PJNATH library provides facilities to support both the core  
     84 * <B>STUN-bis</B> specification and the <B>TURN</B> usage of STUN,  
     85 * as well as other STUN usages. Please see #pj_stun_attr_type for  
     86 * list of STUN attributes supported by this library. 
     87 * 
     88 *  
     89 * The following are some design principles that have been utilized 
     90 * when implementing the STUN library in PJNATH: 
     91 * 
     92 *  - layered architecture, with \ref PJNATH_STUN_MSG as the lowest 
     93 *    layer and \ref PJNATH_STUN_SESSION as the highest abstraction 
     94 *    layer, to accommodate various usage scenario of the library. 
     95 * 
     96 *  - no transport -- the STUN library is pretty much transport 
     97 *    independent and all sending and receiving functionalities will 
     98 *    have to be implemented by application or higher level 
     99 *    abstraction (such as ICE). This helps facilitating an even 
     100 *    more usage scenarios of the library. 
     101 * 
     102 *  - common functionalities for both STUN client and server 
     103 *    development. All STUN components can be used to develop both 
     104 *    STUN client and STUN server application, and in fact, in ICE, 
     105 *    both STUN client and server functionality exist in a single 
     106 *    ICE session. 
     107 * 
     108 * \n 
     109 * 
     110 * \subsection PJNATH_STUN_ARCH STUN Library Organization 
     111 * 
     112 
     113 \verbatim 
     114 
     115    +-----------------------------------------------------------------+ 
     116    |                                                                 | 
     117    |                   A P P L I C A T I O N                         | 
     118    |                                                                 | 
     119    +-----------------------------------------------------------------+ 
     120         ^                          ^ 
     121         |                          | 
     122         v                          v 
     123    +--------+    +-----------------------------------+    +----------+ 
     124    |        |    |                                   |    |          | 
     125    |  Appl- |<-->|      S T U N   S E S S I O N      |<-->| S T U N  | 
     126    | ication|    |                                   |    |  Authen- | 
     127    | Trans- |    +-----------------------------------+    | tication | 
     128    |  port  |    |                                   |    |          | 
     129    |        |<-->|  S T U N   T R A N S A C T I O N  |    +----------+ 
     130    |        |    |                                   | 
     131    |        |    +-----------------------------------+ 
     132    |        |    |                                   | 
     133    |        |    |    STUN MESSAGE REPRESENTATION    | 
     134    +--------+    |            AND PARSING            | 
     135                  +-----------------------------------+ 
     136 
     137 \endverbatim 
     138 
     139 * The STUN library is organized as follows: 
     140 * 
     141 *  - the lowest layer of the library is \ref PJNATH_STUN_MSG. This layer 
     142 *    provides STUN message representation, validation, parsing, and 
     143 *    debugging (dump to log) of STUN messages. 
     144 * 
     145 *  - for client, the next higher layer is \ref PJNATH_STUN_TRANSACTION, 
     146 *    which manages retransmissions of STUN request. 
     147 * 
     148 *  - \ref PJNATH_STUN_AUTH provides mechanism to verify STUN 
     149 *    credential in incoming STUN messages. 
     150 * 
     151 *  - for both client and server, the next higher abstraction is 
     152 *    \ref PJNATH_STUN_SESSION, which provides management of incoming 
     153 *    and outgoing messages and association of STUN credential to 
     154 *    a STUN session. 
     155 * 
     156 * As mentioned previously, all STUN library components are independent 
     157 * of any transports. Application gives incoming packet 
     158 * to the STUN components for processing. and it must supply the STUN  
     159 * components with callback to send outgoing messages. 
     160 *  
     161 * \n 
     162 * 
     163 * \section PJNATH_ICE ICE Implementation 
     164 * 
     165 * Interactive Connectivity Establishment (ICE) is a standard based  
     166 * methodology for traversing Network Address Translator (NAT), and 
     167 * is described in  
     168 * <A HREF="http://www.ietf.org/internet-drafts/draft-ietf-mmusic-ice-14.txt"> 
     169 * <B>draft-ietf-mmusic-ice-14.txt</B></A> draft. The PJNATH ICE 
     170 * implementation is aimed to provide a usable and generic ICE transports 
     171 * for different types of application, including but not limited to 
     172 * the usage of ICE in SIP/SDP offer/answer. 
     173 *  
     174 * \subsection PJNATH_ICE_ARCH ICE Library Organization 
     175 *  
     176 * The ICE library is organized as follows: 
     177 * 
     178 *  - the lowest layer is \ref PJNATH_ICE_SESSION, which provides  
     179 *    ICE management and negotiation in a transport-independent way. 
     180 *    This layer contains the state machines to perform ICE 
     181 *    negotiation, and provides the most flexibility to control all 
     182 *    aspects of ICE session. This layer normally is only usable for 
     183 *    ICE implementors. 
     184 * 
     185 *  - higher in the hierarchy is \ref PJNATH_ICE_STREAM_TRANSPORT, 
     186 *    which binds ICE with UDP sockets, and provides STUN binding 
     187 *    and relay/TURN allocation for the sockets. This component can 
     188 *    be directly used by application, although normally application 
     189 *    should use the next higher abstraction below since it provides 
     190 *    SDP translations and better integration with other PJ libraries 
     191 *    such as PJSIP and PJMEDIA. 
     192 * 
     193 *  - the highest abstraction is ICE media transport, which maintains 
     194 *    ICE stream transport and provides SDP translations to be used 
     195 *    for SIP offer/answer exchanges. 
     196 */ 
     197 
     198/** 
     199 * @defgroup PJNATH_STUN STUN Library 
     200 * @brief Open source STUN library 
     201 * 
     202 * This module contains implementation of STUN library in PJNATH - 
     203 * the open source NAT helper containing STUN and ICE. 
    65204 */ 
    66205 
Note: See TracChangeset for help on using the changeset viewer.