Browse Source

Doxygen updates

oej 16 years ago
parent
commit
3ca1a53f84

+ 4 - 2
atomic/atomic_alpha.h

@@ -15,8 +15,10 @@
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
  */
-/*
- *  atomic operations and memory barriers (alpha specific)
+
+/** @file
+ *  @brief atomic operations and memory barriers (alpha specific)
+ *
  *  WARNING: atomic ops do not include memory barriers
  *  WARNING: atomic ops do not include memory barriers
  *  see atomic_ops.h for more details 
  *  see atomic_ops.h for more details 
  *
  *

+ 2 - 1
atomic/atomic_arm.h

@@ -15,7 +15,8 @@
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
  */
-/*
+
+/** @file	@brief
  *  atomic ops and memory barriers for arm (>= v3)
  *  atomic ops and memory barriers for arm (>= v3)
  *  see atomic_ops.h for more details 
  *  see atomic_ops.h for more details 
  *
  *

+ 9 - 4
atomic/atomic_common.h

@@ -15,10 +15,12 @@
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
  */
-/*
+
+/** @file       @brief
  * common part for all the atomic operations (atomic_t and common operations)
  * common part for all the atomic operations (atomic_t and common operations)
- *  See atomic_ops.h for more info.
+ *  See @ref atomic_ops.h for more info.
  */
  */
+
 /* 
 /* 
  * History:
  * History:
  * --------
  * --------
@@ -28,16 +30,18 @@
 #ifndef __atomic_common
 #ifndef __atomic_common
 #define __atomic_common
 #define __atomic_common
 
 
-/* atomic_t defined as a struct to easily catch non atomic ops. on it,
+/** @brief atomic_t defined as a struct to easily catch non atomic ops. on it,
  * e.g.  atomic_t  foo; foo++  will generate a compile error */
  * e.g.  atomic_t  foo; foo++  will generate a compile error */
 typedef struct{ volatile int val; } atomic_t; 
 typedef struct{ volatile int val; } atomic_t; 
 
 
 
 
-/* store and load operations are atomic on all cpus, note however that they
+/** @name AtomicOps store and load operations are atomic on all cpus, note however that they
  * don't include memory barriers so if you want to use atomic_{get,set} 
  * don't include memory barriers so if you want to use atomic_{get,set} 
  * to implement mutexes you must use the mb_* versions or explicitely use
  * to implement mutexes you must use the mb_* versions or explicitely use
  * the barriers */
  * the barriers */
 
 
+/*@{ */
+
 #define atomic_set_int(pvar, i) (*(int*)(pvar)=i)
 #define atomic_set_int(pvar, i) (*(int*)(pvar)=i)
 #define atomic_set_long(pvar, i) (*(long*)(pvar)=i)
 #define atomic_set_long(pvar, i) (*(long*)(pvar)=i)
 #define atomic_get_int(pvar) (*(int*)(pvar))
 #define atomic_get_int(pvar) (*(int*)(pvar))
@@ -50,5 +54,6 @@ inline static int atomic_get(atomic_t *v)
 	return atomic_get_int(&(v->val));
 	return atomic_get_int(&(v->val));
 }
 }
 
 
+/*@} */
 
 
 #endif
 #endif

+ 2 - 1
atomic/atomic_mips2.h

@@ -15,7 +15,8 @@
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
  */
-/*
+
+/** @file @brief
  *  atomic operations and memory barriers (mips isa 2 and mips64 specific)
  *  atomic operations and memory barriers (mips isa 2 and mips64 specific)
  *  WARNING: atomic ops do not include memory barriers
  *  WARNING: atomic ops do not include memory barriers
  *  see atomic_ops.h for more details 
  *  see atomic_ops.h for more details 

+ 2 - 1
atomic/atomic_native.h

@@ -15,7 +15,8 @@
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
  */
-/*
+
+/** @file @brief
  *  include file for native (asm) atomic operations and memory barriers
  *  include file for native (asm) atomic operations and memory barriers
  *  WARNING: atomic ops do not include memory barriers
  *  WARNING: atomic ops do not include memory barriers
  *  See atomic_ops.h for more info.
  *  See atomic_ops.h for more info.

+ 2 - 1
atomic/atomic_ppc.h

@@ -15,7 +15,8 @@
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
  */
-/*
+
+/** @file @brief
  *  atomic operations and memory barriers (powerpc and powerpc64 versions)
  *  atomic operations and memory barriers (powerpc and powerpc64 versions)
  *  WARNING: atomic ops do not include memory barriers
  *  WARNING: atomic ops do not include memory barriers
  *  see atomic_ops.h for more details 
  *  see atomic_ops.h for more details 

+ 3 - 1
atomic/atomic_sparc.h

@@ -15,12 +15,14 @@
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
  */
-/*
+
+/** @file @brief
  *  memory barriers for sparc32 ( version < v 9))
  *  memory barriers for sparc32 ( version < v 9))
  *  see atomic_ops.h for more details 
  *  see atomic_ops.h for more details 
  *
  *
  * Config defines: NOSMP
  * Config defines: NOSMP
  */
  */
+
 /* 
 /* 
  * History:
  * History:
  * --------
  * --------

+ 3 - 1
atomic/atomic_sparc64.h

@@ -15,7 +15,8 @@
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
  */
-/*
+
+/** @file @brief
  *  atomic operations and memory barriers (sparc64 version, 32 and 64 bit modes)
  *  atomic operations and memory barriers (sparc64 version, 32 and 64 bit modes)
  *  WARNING: atomic ops do not include memory barriers
  *  WARNING: atomic ops do not include memory barriers
  *  see atomic_ops.h for more details 
  *  see atomic_ops.h for more details 
@@ -25,6 +26,7 @@
  *                               sparc32plus code)
  *                               sparc32plus code)
  *               - NOSMP
  *               - NOSMP
  */
  */
+
 /* 
 /* 
  * History:
  * History:
  * --------
  * --------

+ 2 - 1
atomic/atomic_unknown.h

@@ -15,7 +15,8 @@
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
  */
-/*
+
+/** @file @brief
  *  atomic operations and memory barriers implemented using locks
  *  atomic operations and memory barriers implemented using locks
  *  (for architectures not yet supported via inline asm)
  *  (for architectures not yet supported via inline asm)
  *
  *

+ 2 - 1
atomic/atomic_x86.h

@@ -15,7 +15,8 @@
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
  */
-/*
+
+/** @file @brief
  *  atomic operations and memory barriers (x86 and x86_64/amd64 specific)
  *  atomic operations and memory barriers (x86 and x86_64/amd64 specific)
  *  WARNING: atomic ops do not include memory barriers
  *  WARNING: atomic ops do not include memory barriers
  *  see atomic_ops.h for more details 
  *  see atomic_ops.h for more details 

+ 1 - 1
atomic_ops.h

@@ -175,7 +175,7 @@
 
 
 #include "atomic/atomic_native.h"
 #include "atomic/atomic_native.h"
 
 
-/* if no native operations, emulate them using locks */
+/*! \brief if no native operations, emulate them using locks */
 #if  ! defined HAVE_ASM_INLINE_ATOMIC_OPS || ! defined HAVE_ASM_INLINE_MEMBAR
 #if  ! defined HAVE_ASM_INLINE_ATOMIC_OPS || ! defined HAVE_ASM_INLINE_MEMBAR
 
 
 #include "atomic/atomic_unknown.h"
 #include "atomic/atomic_unknown.h"

+ 1 - 5
atomic_ops_init.h

@@ -10,11 +10,6 @@
  * the Free Software Foundation; either version 2 of the License, or
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version
  * (at your option) any later version
  *
  *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- *    [email protected]
- *
  * ser is distributed in the hope that it will be useful,
  * ser is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
@@ -24,6 +19,7 @@
  * along with this program; if not, write to the Free Software
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
  */
+
 /*!
 /*!
  * \file
  * \file
  * \brief SIP-router core :: atomic_ops init functions
  * \brief SIP-router core :: atomic_ops init functions

+ 10 - 11
basex.h

@@ -17,6 +17,7 @@
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
  */
+
 /*!
 /*!
  * \file
  * \file
  * \brief SIP-router core :: convert/decode to/from ascii using various bases
  * \brief SIP-router core :: convert/decode to/from ascii using various bases
@@ -27,15 +28,6 @@
  *
  *
  *
  *
  * Functions:
  * Functions:
- *  - init_basex()                    : inits internal lookup tables
- *  - HEX_HI(unsigned char c)         : returns the first 4 bits of c converted to a hex digit
- *  - HEX_LOW(unsigned char c)         : returns the low 4 bits of converted to a hex digit
- *  - UNHEX(unsigned char hex_digit)            : converts hex_digit to a
- *                                              number (0..15); it might
- *                                              return 0xff for invalid 
- *                                              digit (but with some compile
- *                                              option it won't check)
- *
  *  - base16_enc(src, src_len, dst, dst_len)    : encode to standard hex
  *  - base16_enc(src, src_len, dst, dst_len)    : encode to standard hex
  *  - base16_dec(src, src_len, dst, dst_len)    : decode from standard hex
  *  - base16_dec(src, src_len, dst, dst_len)    : decode from standard hex
  *  - base16_enc_len(len)                       : length needed to encode len bytes (macro)
  *  - base16_enc_len(len)                       : length needed to encode len bytes (macro)
@@ -61,7 +53,7 @@
  *  for some interesting tests and ideeas).
  *  for some interesting tests and ideeas).
  *
  *
  *  Test results for 40 bytes  (typical ser nounce) in average cpu cycles:
  *  Test results for 40 bytes  (typical ser nounce) in average cpu cycles:
-<verbatim>
+\verbatim
  *                    lookup   lookup_large lookup8k no-lookup
  *                    lookup   lookup_large lookup8k no-lookup
  *  base16_enc           211/231  218/199      -       1331
  *  base16_enc           211/231  218/199      -       1331
  *  base16_dec           252/251  236          -       1226
  *  base16_dec           252/251  236          -       1226
@@ -70,7 +62,7 @@
  *  q_base64_enc         -                              288
  *  q_base64_enc         -                              288
  *  q_base64_dec         -                              281
  *  q_base64_dec         -                              281
  *  (see test/basex.txt for more results)
  *  (see test/basex.txt for more results)
-</verbatim>
+\endverbatim
  *
  *
  * Defines:
  * Defines:
  *  - BASE64_LOOKUP_TABLE/NO_BASE64_LOOKUP_TABLE : use (default)/don't use
  *  - BASE64_LOOKUP_TABLE/NO_BASE64_LOOKUP_TABLE : use (default)/don't use
@@ -144,11 +136,17 @@
 extern unsigned char _bx_hexdig_hi[256];
 extern unsigned char _bx_hexdig_hi[256];
 extern unsigned char _bx_hexdig_low[256];
 extern unsigned char _bx_hexdig_low[256];
 
 
+/*! \brief returns the first 4 bits of c converted to a hex digit */
 #define HEX_HI(h)	_bx_hexdig_hi[(unsigned char)(h)]
 #define HEX_HI(h)	_bx_hexdig_hi[(unsigned char)(h)]
+/*! \brief returns the low 4 bits of converted to a hex digit */
 #define HEX_LOW(h)	_bx_hexdig_low[(unsigned char)(h)]
 #define HEX_LOW(h)	_bx_hexdig_low[(unsigned char)(h)]
 
 
 extern unsigned char _bx_unhexdig256[256];
 extern unsigned char _bx_unhexdig256[256];
 
 
+/*! \brief  converts hex_digit to a number (0..15); it might
+ *      \return 0xff for invalid digit (but with some compile
+ *      option it won't check)
+ */
 #define UNHEX(h)	_bx_unhexdig256[(h)]
 #define UNHEX(h)	_bx_unhexdig256[(h)]
 
 
 #else /* BASE16_LOOKUP_LARGE */
 #else /* BASE16_LOOKUP_LARGE */
@@ -861,6 +859,7 @@ inline static int q_base64_dec(unsigned char* src, int slen,
 #undef q_b64_pad
 #undef q_b64_pad
 }
 }
 
 
+/*! \brief inits internal lookup tables */
 int init_basex();
 int init_basex();
 
 
 
 

+ 1 - 0
cfg_parser.h

@@ -21,6 +21,7 @@
  * with this program; if not, write to the Free Software Foundation, Inc., 
  * with this program; if not, write to the Free Software Foundation, Inc., 
  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  */
  */
+
 /*!
 /*!
  * \file
  * \file
  * \brief SIP-router core :: Standalone Configuration File Parser
  * \brief SIP-router core :: Standalone Configuration File Parser

+ 1 - 6
clist.h

@@ -12,11 +12,6 @@
  * the Free Software Foundation; either version 2 of the License, or
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version
  * (at your option) any later version
  *
  *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- *    [email protected]
- *
  * ser is distributed in the hope that it will be useful,
  * ser is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
@@ -43,7 +38,7 @@
 #ifndef _clist_h
 #ifndef _clist_h
 #define _clist_h
 #define _clist_h
 
 
-/* circular list */
+/*! \brief circular list */
 #define clist_init(c, next, prev) \
 #define clist_init(c, next, prev) \
 	do{ \
 	do{ \
 		(c)->next=(void*)(c); \
 		(c)->next=(void*)(c); \

+ 5 - 10
comp_defs.h

@@ -10,11 +10,6 @@
  * the Free Software Foundation; either version 2 of the License, or
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version
  * (at your option) any later version
  *
  *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- *    [email protected]
- *
  * ser is distributed in the hope that it will be useful,
  * ser is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
@@ -25,12 +20,12 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
  */
 
 
-/* compatibility defs for emergency roll-back if things do not work ;
+/*! \brief compatibility defs for emergency roll-back if things do not work ;
  * if that happens:
  * if that happens:
- * a) define PRESERVE_ZT (affects most of parser)
- * b) define DONT_REMOVE_ZT (affects first line)
- * c) define SCRATCH
- * d) undefine REMOVE_ALL_ZT (affects via)
+ * 	- a) define PRESERVE_ZT (affects most of parser)
+ * 	- b) define DONT_REMOVE_ZT (affects first line)
+ * 	- c) define SCRATCH
+ * 	- d) undefine REMOVE_ALL_ZT (affects via)
  */
  */
 
 
 
 

+ 1 - 0
compiler_opt.h

@@ -15,6 +15,7 @@
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
  */
+
 /*!
 /*!
  * \file
  * \file
  * \brief SIP-router core :: Compiler specific optimizations
  * \brief SIP-router core :: Compiler specific optimizations

+ 17 - 14
data_lump.h

@@ -12,11 +12,6 @@
  * the Free Software Foundation; either version 2 of the License, or
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version
  * (at your option) any later version
  *
  *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- *    [email protected]
- *
  * ser is distributed in the hope that it will be useful,
  * ser is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
@@ -26,6 +21,7 @@
  * along with this program; if not, write to the Free Software 
  * along with this program; if not, write to the Free Software 
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
  */
+
 /* History:
 /* History:
  * --------
  * --------
  *  2003-01-29  s/int/enum ... more convenient for gdb (jiri)
  *  2003-01-29  s/int/enum ... more convenient for gdb (jiri)
@@ -37,6 +33,13 @@
  *
  *
  */
  */
 
 
+/*!
+ * \file
+ * \brief SIP-router core :: Data_lumps
+ * \ingroup core
+ * Module: \ref core
+ */
+
 
 
 #ifndef data_lump_h
 #ifndef data_lump_h
 #define data_lump_h
 #define data_lump_h
@@ -45,42 +48,42 @@
 #include "parser/msg_parser.h"
 #include "parser/msg_parser.h"
 #include "parser/hf.h"
 #include "parser/hf.h"
 
 
-/* adds a header to the end */
+/*! \brief adds a header to the end */
 struct lump* append_new_lump(struct lump** list, char* new_hdr,
 struct lump* append_new_lump(struct lump** list, char* new_hdr,
 							 int len, enum _hdr_types_t type);
 							 int len, enum _hdr_types_t type);
-/* inserts a header to the beginning */
+/*! \brief inserts a header to the beginning */
 struct lump* insert_new_lump(struct lump** list, char* new_hdr,
 struct lump* insert_new_lump(struct lump** list, char* new_hdr,
 							  int len, enum _hdr_types_t type);
 							  int len, enum _hdr_types_t type);
 struct lump* insert_new_lump_after(struct lump* after,
 struct lump* insert_new_lump_after(struct lump* after,
 									char* new_hdr, int len, enum _hdr_types_t type);
 									char* new_hdr, int len, enum _hdr_types_t type);
 struct lump* insert_new_lump_before(struct lump* before, char* new_hdr,
 struct lump* insert_new_lump_before(struct lump* before, char* new_hdr,
 									int len,enum _hdr_types_t type);
 									int len,enum _hdr_types_t type);
-/* substitutions (replace with ip address, port etc) */
+/*! \brief substitutions (replace with ip address, port etc) */
 struct lump* insert_subst_lump_after(struct lump* after,  enum lump_subst subst,
 struct lump* insert_subst_lump_after(struct lump* after,  enum lump_subst subst,
 									enum _hdr_types_t type);
 									enum _hdr_types_t type);
 struct lump* insert_subst_lump_before(struct lump* before,enum lump_subst subst,
 struct lump* insert_subst_lump_before(struct lump* before,enum lump_subst subst,
 									enum _hdr_types_t type);
 									enum _hdr_types_t type);
 
 
-/* conditional lumps */
+/*! \brief conditional lumps */
 struct lump* insert_cond_lump_after(struct lump* after, enum lump_conditions c,
 struct lump* insert_cond_lump_after(struct lump* after, enum lump_conditions c,
 									enum _hdr_types_t type);
 									enum _hdr_types_t type);
 struct lump* insert_cond_lump_before(struct lump* after, enum lump_conditions c,
 struct lump* insert_cond_lump_before(struct lump* after, enum lump_conditions c,
 									enum _hdr_types_t type);
 									enum _hdr_types_t type);
 
 
-/* removes an already existing header */
+/*! \brief removes an already existing header */
 struct lump* del_lump(struct sip_msg* msg, int offset, int len, enum _hdr_types_t type);
 struct lump* del_lump(struct sip_msg* msg, int offset, int len, enum _hdr_types_t type);
-/* set an anchor */
+/*! \brief set an anchor */
 struct lump* anchor_lump(struct sip_msg* msg, int offset, int len, enum _hdr_types_t type);
 struct lump* anchor_lump(struct sip_msg* msg, int offset, int len, enum _hdr_types_t type);
 
 
 
 
 
 
-/* duplicates a lump list shallowly in pkg-mem */
+/*! \brief duplicates a lump list shallowly in pkg-mem */
 struct lump* dup_lump_list( struct lump *l );
 struct lump* dup_lump_list( struct lump *l );
-/* frees a shallowly duplicated lump list */
+/*! \brief frees a shallowly duplicated lump list */
 void free_duped_lump_list(struct lump* l);
 void free_duped_lump_list(struct lump* l);
 
 
 
 
-/* remove all non-SHMEM lumps from the list */
+/*! \brief remove all non-SHMEM lumps from the list */
 void del_nonshm_lump( struct lump** lump_list );
 void del_nonshm_lump( struct lump** lump_list );
 
 
 #endif
 #endif

+ 9 - 6
data_lump_rpl.h

@@ -11,11 +11,6 @@
  * the Free Software Foundation; either version 2 of the License, or
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version
  * (at your option) any later version
  *
  *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- *    [email protected]
- *
  * ser is distributed in the hope that it will be useful,
  * ser is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
@@ -36,6 +31,14 @@
  *               more easy (andrei)
  *               more easy (andrei)
  */
  */
 
 
+/*!
+ * \file
+ * \brief SIP-router core :: Data lumps
+ * \ingroup core
+ * Module: \ref core
+ */
+
+
 
 
 #ifndef data_lump_rpl_h
 #ifndef data_lump_rpl_h
 #define data_lump_rpl_h
 #define data_lump_rpl_h
@@ -59,7 +62,7 @@ struct lump_rpl
 struct lump_rpl** add_lump_rpl2(struct sip_msg *, char *, int , int );
 struct lump_rpl** add_lump_rpl2(struct sip_msg *, char *, int , int );
 
 
 
 
-/* compatibility wrapper for the old add_lump_rpl version */
+/*! \brief compatibility wrapper for the old add_lump_rpl version */
 inline static struct lump_rpl* add_lump_rpl(struct sip_msg* msg,
 inline static struct lump_rpl* add_lump_rpl(struct sip_msg* msg,
 												char* s, int len , int flags )
 												char* s, int len , int flags )
 {
 {

+ 55 - 46
dns_cache.h

@@ -12,11 +12,6 @@
  * the Free Software Foundation; either version 2 of the License, or
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version
  * (at your option) any later version
  *
  *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- *    [email protected]
- *
  * ser is distributed in the hope that it will be useful,
  * ser is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
@@ -26,6 +21,7 @@
  * along with this program; if not, write to the Free Software
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
  */
+
 /* History:
 /* History:
  * --------
  * --------
  *  2006-07-13  created by andrei
  *  2006-07-13  created by andrei
@@ -33,6 +29,14 @@
  *  2007-07-30  DNS cache measurements added (Gergo)
  *  2007-07-30  DNS cache measurements added (Gergo)
  */
  */
 
 
+/**
+ * @file
+ * @brief SIP-router core :: resolver/dns related functions, dns cache and failover
+ * @ingroup core
+ * Module: @ref core
+ */
+
+
 
 
 #ifndef __dns_cache_h
 #ifndef __dns_cache_h
 #define __dns_cache_h
 #define __dns_cache_h
@@ -58,69 +62,74 @@
 #define DEFAULT_DNS_CACHE_MAX_TTL ((unsigned int)(-1)) /* (maxint) */
 #define DEFAULT_DNS_CACHE_MAX_TTL ((unsigned int)(-1)) /* (maxint) */
 #define DEFAULT_DNS_MAX_MEM 500 /* 500 Kb */
 #define DEFAULT_DNS_MAX_MEM 500 /* 500 Kb */
 
 
-/* uncomment the define below for SRV weight based load balancing */
+/** @brief uncomment the define below for SRV weight based load balancing */
 #define DNS_SRV_LB
 #define DNS_SRV_LB
 
 
 #define DNS_LU_LST
 #define DNS_LU_LST
 
 
-/* dns functions return them as negative values (e.g. return -E_DNS_NO_IP)
+/** @brief dns functions return them as negative values (e.g. return -E_DNS_NO_IP)
+ *
  * listed in the order of importance ( if more errors, only the most important
  * listed in the order of importance ( if more errors, only the most important
  * is returned)
  * is returned)
  */
  */
 enum dns_errors{
 enum dns_errors{
 					E_DNS_OK=0,
 					E_DNS_OK=0,
-					E_DNS_EOR, /* no more records (not an error)
+					E_DNS_EOR, /**< no more records (not an error)
 					              -- returned only by the dns_resolve*
 					              -- returned only by the dns_resolve*
 								  functions when called iteratively,; it
 								  functions when called iteratively,; it
 								  signals the end of the ip/records list */
 								  signals the end of the ip/records list */
-					E_DNS_UNKNOWN /* unkown error */,
-					E_DNS_INTERNAL_ERR /* internal error */,
+					E_DNS_UNKNOWN /**< unkown error */,
+					E_DNS_INTERNAL_ERR /**< internal error */,
 					E_DNS_BAD_SRV_ENTRY,
 					E_DNS_BAD_SRV_ENTRY,
-					E_DNS_NO_SRV /* unresolvable srv record */,
+					E_DNS_NO_SRV /**< unresolvable srv record */,
 					E_DNS_BAD_IP_ENTRY,
 					E_DNS_BAD_IP_ENTRY,
-					E_DNS_NO_IP /* unresolvable a or aaaa records*/,
-					E_DNS_BAD_IP /* the ip is invalid */,
-					E_DNS_BLACKLIST_IP /* the ip is blacklisted */,
-					E_DNS_NAME_TOO_LONG /* try again with a shorter name */,
-					E_DNS_AF_MISMATCH /* ipv4 or ipv6 only requested, but
+					E_DNS_NO_IP /**< unresolvable a or aaaa records*/,
+					E_DNS_BAD_IP /**< the ip is invalid */,
+					E_DNS_BLACKLIST_IP /**< the ip is blacklisted */,
+					E_DNS_NAME_TOO_LONG /**< try again with a shorter name */,
+					E_DNS_AF_MISMATCH /**< ipv4 or ipv6 only requested, but
 										 name contains an ip addr. of the
 										 name contains an ip addr. of the
 										 opossite type */ ,
 										 opossite type */ ,
-					E_DNS_NO_NAPTR /* unresolvable naptr record */,
-					E_DNS_CRITICAL /* critical error, marks the end
+					E_DNS_NO_NAPTR /**< unresolvable naptr record */,
+					E_DNS_CRITICAL /**< critical error, marks the end
 									  of the error table (always last) */
 									  of the error table (always last) */
 };
 };
 
 
 
 
 
 
-/* return a short string, printable error description (err <=0) */
+/** @brief return a short string, printable error description (err <=0) */
 const char* dns_strerror(int err);
 const char* dns_strerror(int err);
 
 
-/* dns entry error flags */
+/** @brief dns entry error flags */
 #define DNS_BAD_NAME     1 /* unresolvable */
 #define DNS_BAD_NAME     1 /* unresolvable */
 
 
-/* dns requests flags */
+/** @name dns requests flags */
+/*@{ */
 #define DNS_NO_FLAGS	0
 #define DNS_NO_FLAGS	0
 #define DNS_IPV4_ONLY	1
 #define DNS_IPV4_ONLY	1
 #define DNS_IPV6_ONLY	2
 #define DNS_IPV6_ONLY	2
 #define DNS_IPV6_FIRST	4
 #define DNS_IPV6_FIRST	4
-#define DNS_SRV_RR_LB	8  /* SRV RR weight based load balancing */
-#define DNS_TRY_NAPTR	16 /* enable naptr lookup */
+#define DNS_SRV_RR_LB	8  /**< SRV RR weight based load balancing */
+#define DNS_TRY_NAPTR	16 /**< enable naptr lookup */
+/*@} */
 
 
 
 
-/* ip blacklist error flags */
+/** @name ip blacklist error flags */
+/*@{ */
 #define IP_ERR_BAD_DST      2 /* destination is marked as bad (e.g. bad ip) */
 #define IP_ERR_BAD_DST      2 /* destination is marked as bad (e.g. bad ip) */
 #define IP_ERR_SND          3 /* send error while using this as destination */
 #define IP_ERR_SND          3 /* send error while using this as destination */
 #define IP_ERR_TIMEOUT      4 /* timeout waiting for a response */
 #define IP_ERR_TIMEOUT      4 /* timeout waiting for a response */
 #define IP_ERR_TCP_CON      5 /* could not establish tcp connection */
 #define IP_ERR_TCP_CON      5 /* could not establish tcp connection */
+/*@} */
 
 
 
 
-/* stripped down dns rr */
+/** @brief stripped down dns rr 
+	@note name, type and class are not needed, contained in struct dns_query */
 struct dns_rr{
 struct dns_rr{
 	struct dns_rr* next;
 	struct dns_rr* next;
-	void* rdata; /* depends on the type */
-	/* name, type and class are not needed, contained in struct dns_query */
-	ticks_t expire; /* = ttl + crt_time */
-	unsigned char err_flags; /* if 0 everything is ok */
+	void* rdata; /**< depends on the type */
+	ticks_t expire; /**< = ttl + crt_time */
+	unsigned char err_flags; /**< if 0 everything is ok */
 
 
 };
 };
 
 
@@ -163,15 +172,15 @@ typedef unsigned long long srv_flags_t;
 #endif
 #endif
 
 
 struct dns_srv_handle{
 struct dns_srv_handle{
-	struct dns_hash_entry* srv; /* srv entry */
-	struct dns_hash_entry* a;   /* a or aaaa current entry */
+	struct dns_hash_entry* srv; /**< srv entry */
+	struct dns_hash_entry* a;   /**< a or aaaa current entry */
 #ifdef DNS_SRV_LB
 #ifdef DNS_SRV_LB
 	srv_flags_t srv_tried_rrs;
 	srv_flags_t srv_tried_rrs;
 #endif
 #endif
-	unsigned short port; /* current port */
-	unsigned char srv_no; /* current record no. in the srv entry */
-	unsigned char ip_no;  /* current record no. in the a/aaaa entry */
-	unsigned char proto;  /* protocol number */
+	unsigned short port; /**< current port */
+	unsigned char srv_no; /**< current record no. in the srv entry */
+	unsigned char ip_no;  /**< current record no. in the a/aaaa entry */
+	unsigned char proto;  /**< protocol number */
 };
 };
 
 
 
 
@@ -209,7 +218,7 @@ inline static void dns_srv_handle_put(struct dns_srv_handle* h)
 
 
 
 
 
 
-/* use it when copying, it manually increases the ref cound */
+/** @brief use it when copying, it manually increases the ref cound */
 inline static void dns_srv_handle_ref(struct dns_srv_handle *h)
 inline static void dns_srv_handle_ref(struct dns_srv_handle *h)
 {
 {
 	if (h){
 	if (h){
@@ -222,7 +231,7 @@ inline static void dns_srv_handle_ref(struct dns_srv_handle *h)
 
 
 
 
 
 
-/* safe copy increases the refcnt, src must not change while in this function
+/** @brief safe copy increases the refcnt, src must not change while in this function
  * WARNING: the copy must be dns_srv_handle_put ! */
  * WARNING: the copy must be dns_srv_handle_put ! */
 inline static void dns_srv_handle_cpy(struct dns_srv_handle* dst,
 inline static void dns_srv_handle_cpy(struct dns_srv_handle* dst,
 										struct dns_srv_handle* src)
 										struct dns_srv_handle* src)
@@ -233,7 +242,7 @@ inline static void dns_srv_handle_cpy(struct dns_srv_handle* dst,
 
 
 
 
 
 
-/* same as above but assume shm_lock held (for internal tm use only) */
+/** @brief same as above but assume shm_lock held (for internal tm use only) */
 inline static void dns_srv_handle_put_shm_unsafe(struct dns_srv_handle* h)
 inline static void dns_srv_handle_put_shm_unsafe(struct dns_srv_handle* h)
 {
 {
 	if (h){
 	if (h){
@@ -250,7 +259,7 @@ inline static void dns_srv_handle_put_shm_unsafe(struct dns_srv_handle* h)
 
 
 
 
 
 
-/* get "next" ip next time a dns_srv_handle function is called
+/** @brief get "next" ip next time a dns_srv_handle function is called
  * params: h   - struct dns_srv_handler
  * params: h   - struct dns_srv_handler
  *         err - return code of the last dns_*_resolve* call
  *         err - return code of the last dns_*_resolve* call
  * returns: 0 if it doesn't make sense to try another record,
  * returns: 0 if it doesn't make sense to try another record,
@@ -278,7 +287,7 @@ inline static void dns_srv_handle_init(struct dns_srv_handle* h)
 
 
 
 
 
 
-/* performes a srv query on name
+/** @brief performes a srv query on name
  * Params:  name  - srv query target (e.g. _sip._udp.foo.bar)
  * Params:  name  - srv query target (e.g. _sip._udp.foo.bar)
  *          ip    - result: first good ip found
  *          ip    - result: first good ip found
  *          port  - result: corresponding port number
  *          port  - result: corresponding port number
@@ -288,7 +297,7 @@ inline static void dns_srv_handle_init(struct dns_srv_handle* h)
 int dns_srv_get_ip(str* name, struct ip_addr* ip, unsigned short* port,
 int dns_srv_get_ip(str* name, struct ip_addr* ip, unsigned short* port,
 					int flags);
 					int flags);
 
 
-/* performs an A, AAAA (or both) query/queries
+/** @brief performs an A, AAAA (or both) query/queries
  * Params:  name  - query target (e.g. foo.bar)
  * Params:  name  - query target (e.g. foo.bar)
  *          ip    - result: first good ip found
  *          ip    - result: first good ip found
  *          flags - resolve options (like ipv4 only, ipv6 prefered a.s.o)
  *          flags - resolve options (like ipv4 only, ipv6 prefered a.s.o)
@@ -300,7 +309,7 @@ struct hostent* dns_srv_get_he(str* name, unsigned short* port, int flags);
 struct hostent* dns_get_he(str* name, int flags);
 struct hostent* dns_get_he(str* name, int flags);
 
 
 
 
-/* resolve name to an ip, using srv record. Can be called multiple times
+/** @brief resolve name to an ip, using srv record. Can be called multiple times
  * to iterate on all the possible ips, e.g :
  * to iterate on all the possible ips, e.g :
  * dns_srv_handle_init(h);
  * dns_srv_handle_init(h);
  * ret_code=dns_sip_resolve(h,...);
  * ret_code=dns_sip_resolve(h,...);
@@ -312,7 +321,7 @@ struct hostent* dns_get_he(str* name, int flags);
 int dns_sip_resolve(struct dns_srv_handle* h,  str* name, struct ip_addr* ip,
 int dns_sip_resolve(struct dns_srv_handle* h,  str* name, struct ip_addr* ip,
 					unsigned short* port, char* proto, int flags);
 					unsigned short* port, char* proto, int flags);
 
 
-/* same as above, but fills su intead of changing port and filling an ip */
+/** @brief same as above, but fills su intead of changing port and filling an ip */
 inline static int dns_sip_resolve2su(struct dns_srv_handle* h,
 inline static int dns_sip_resolve2su(struct dns_srv_handle* h,
 									 union sockaddr_union* su,
 									 union sockaddr_union* su,
 									 str* name, unsigned short port,
 									 str* name, unsigned short port,
@@ -327,17 +336,17 @@ inline static int dns_sip_resolve2su(struct dns_srv_handle* h,
 	return ret;
 	return ret;
 }
 }
 
 
-/* deletes all the entries from the cache */
+/** @brief deletes all the entries from the cache */
 void dns_cache_flush(void);
 void dns_cache_flush(void);
 
 
 #ifdef DNS_WATCHDOG_SUPPORT
 #ifdef DNS_WATCHDOG_SUPPORT
-/* sets the state of the DNS servers:
+/** @brief sets the state of the DNS servers:
  * 1: at least one server is up
  * 1: at least one server is up
  * 0: all the servers are down
  * 0: all the servers are down
  */
  */
 void dns_set_server_state(int state);
 void dns_set_server_state(int state);
 
 
-/* returns the state of the DNS servers */
+/** @brief returns the state of the DNS servers */
 int dns_get_server_state(void);
 int dns_get_server_state(void);
 #endif /* DNS_WATCHDOG_SUPPORT */
 #endif /* DNS_WATCHDOG_SUPPORT */
 
 

+ 7 - 5
modules/utils/conf.c

@@ -27,8 +27,6 @@
  * Module: \ref utils
  * Module: \ref utils
  */
  */
 
 
-
-
 #include "conf.h"
 #include "conf.h"
 #include "../../mem/mem.h"
 #include "../../mem/mem.h"
 #include "../../mem/shm_mem.h"
 #include "../../mem/shm_mem.h"
@@ -41,11 +39,9 @@
 #include <stdlib.h>
 #include <stdlib.h>
 #include <stdio.h>
 #include <stdio.h>
 
 
-
 #define BUFSIZE 1000
 #define BUFSIZE 1000
 
 
-
-/* special filter indices */
+/*! \brief special filter indices */
 enum {
 enum {
 	sfidx_request = 0,
 	sfidx_request = 0,
 	sfidx_reply,
 	sfidx_reply,
@@ -300,7 +296,9 @@ static int update_proxy(int id, char *host_str, char *port_str)
  * Parses a configuration string for switch settings and updates
  * Parses a configuration string for switch settings and updates
  * the configuration structure.
  * the configuration structure.
  * \param settings the configuration string in the following form:
  * \param settings the configuration string in the following form:
+\verbatim
  *              <id>=<switch>[,<id>=<switch>]...
  *              <id>=<switch>[,<id>=<switch>]...
+\endverbatim
  * \return 1 on success, -1 otherwise
  * \return 1 on success, -1 otherwise
  */
  */
 int conf_parse_switch(char *settings)
 int conf_parse_switch(char *settings)
@@ -400,7 +398,9 @@ error:
  * Parses a configuration string for switch settings and
  * Parses a configuration string for switch settings and
  * updates the configuration structure.
  * updates the configuration structure.
  * \param settings The configuration string in the following form:
  * \param settings The configuration string in the following form:
+\verbatim
  *              <id>=<filter>[:<filter>]...[,<id>=<filter>[:<filter>]...]...
  *              <id>=<filter>[:<filter>]...[,<id>=<filter>[:<filter>]...]...
+\endverbatim
  * \return 1 on success, -1 otherwise
  * \return 1 on success, -1 otherwise
  */
  */
 int conf_parse_filter(char *settings)
 int conf_parse_filter(char *settings)
@@ -443,7 +443,9 @@ int conf_parse_filter(char *settings)
  * Parses a configuration string for proxy settings and
  * Parses a configuration string for proxy settings and
  * updates the configuration structure.
  * updates the configuration structure.
  * \param settings: The configuration string in the following form:
  * \param settings: The configuration string in the following form:
+\verbatim
  *              <id>=<host>:<port>[,<id>=<host>:<port>]...
  *              <id>=<host>:<port>[,<id>=<host>:<port>]...
+\endverbatim
  * \return: 1 on success, -1 otherwise
  * \return: 1 on success, -1 otherwise
  */
  */
 int conf_parse_proxy(char *settings)
 int conf_parse_proxy(char *settings)

+ 1 - 1
parser/msg_parser.c

@@ -47,7 +47,7 @@
  * \ingroup parser
  * \ingroup parser
  */
  */
 
 
-/*! \defgroup parser
+/*! \defgroup parser SIP-router SIP message parser
  * 
  * 
  * The SIP message parser
  * The SIP message parser
  *
  *

+ 0 - 3
parser/parse_to.h

@@ -26,9 +26,6 @@
  * \ingroup parser
  * \ingroup parser
  */
  */
 
 
-#include "parse_to.h"
-
-
 #ifndef PARSE_TO
 #ifndef PARSE_TO
 #define PARSE_TO
 #define PARSE_TO
 
 

+ 4 - 0
select.c

@@ -79,6 +79,7 @@ struct sip_uri	*select_uri_p = NULL;
  * moves pointer p to the first unused char.
  * moves pointer p to the first unused char.
  *
  *
  * The select identifier must be of the form:
  * The select identifier must be of the form:
+\verbatim
  *   [@] <sel_id> [ '.' <sel_id> ...]
  *   [@] <sel_id> [ '.' <sel_id> ...]
  *   
  *   
  * Where 
  * Where 
@@ -96,6 +97,7 @@ struct sip_uri	*select_uri_p = NULL;
  *     @eval.pop[-1]
  *     @eval.pop[-1]
  *     contact.uri.params.maddr
  *     contact.uri.params.maddr
  *     cfg_get.rtp_proxy.enabled 
  *     cfg_get.rtp_proxy.enabled 
+\endverbatim
  *
  *
  * @return -1 error
  * @return -1 error
  *			  p points to the first unconsumed char
  *			  p points to the first unconsumed char
@@ -186,6 +188,7 @@ error:
  * Parse select string into select structure s and
  * Parse select string into select structure s and
  * moves pointer p to the first unused char.
  * moves pointer p to the first unused char.
  * 
  * 
+\verbatim
  * The select identifier must be of the form:
  * The select identifier must be of the form:
  *   [@] <sel_id> [ '.' <sel_id> ...]
  *   [@] <sel_id> [ '.' <sel_id> ...]
  *   
  *   
@@ -204,6 +207,7 @@ error:
  *     @eval.pop[-1]
  *     @eval.pop[-1]
  *     contact.uri.params.maddr
  *     contact.uri.params.maddr
  *     cfg_get.rtp_proxy.enabled 
  *     cfg_get.rtp_proxy.enabled 
+\endverbatim
   *
   *
   * @param p - double string (asciiz) pointer, *p is moved to the first char
   * @param p - double string (asciiz) pointer, *p is moved to the first char
   *            after the select identifier
   *            after the select identifier