[sr-dev] git:master: modules/tsilo: added MI commands

Olle E. Johansson oej at edvina.net
Wed Nov 12 17:58:17 CET 2014


On 12 Nov 2014, at 12:55, Ovidiu Sas <osas at voipembedded.com> wrote:

> There were discussions in the list about getting rid of the MI interface and sticking with the RPC one. We should stop adding new MI commands. I see that the RPC commands are already implemented.
> 
> 

+1

Some of us worked hard to try to implement all MI commands in RPC in an earlier release. If anything is still
missing, please fix it or send an e-mail to the list. We should have more RPC than MI in the coming release.

/O
> Regards,
> Ovidiu Sas
> 
> On Nov 12, 2014 5:59 AM, "Federico Cabiddu" <federico.cabiddu at gmail.com> wrote:
> Module: sip-router
> Branch: master
> Commit: a255911902788bf74a7f4279fce4758b2f2a4613
> URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=a255911902788bf74a7f4279fce4758b2f2a4613
> 
> Author: Federico Cabiddu <federico.cabiddu at gmail.com>
> Committer: Federico Cabiddu <federico.cabiddu at gmail.com>
> Date:   Wed Nov 12 11:52:29 2014 +0100
> 
> modules/tsilo: added MI commands
> 
> ---
> 
>  modules/tsilo/Makefile            |    5 +++-
>  modules/tsilo/README              |   51 +++++++++++++++++++++++++++++--------
>  modules/tsilo/doc/tsilo_admin.xml |   44 ++++++++++++++++++++++++++------
>  modules/tsilo/ts_hash.c           |    2 +-
>  modules/tsilo/ts_hash.h           |   16 ++++++------
>  modules/tsilo/tsilo.c             |   30 ++++++++++++++++-----
>  6 files changed, 112 insertions(+), 36 deletions(-)
> 
> diff --git a/modules/tsilo/Makefile b/modules/tsilo/Makefile
> index 40b04cb..c179aec 100644
> --- a/modules/tsilo/Makefile
> +++ b/modules/tsilo/Makefile
> @@ -9,10 +9,13 @@ include ../../Makefile.defs
>  auto_gen=
>  NAME=tsilo.so
>  LIBS=
> -DEFS+= -DSER_MOD_INTERFACE
> +DEFS+=-DKAMAILIO_MOD_INTERFACE
> 
>  ifeq ($(INSTALL_FLAVOUR),kamailio)
>  DEFS+= -DWITH_EVENT_LOCAL_REQUEST
>  endif # INSTALL_FLAVOUR
> 
> +SERLIBPATH=../../lib
> +SER_LIBS+=$(SERLIBPATH)/kmi/kmi
> +
>  include ../../Makefile.modules
> diff --git a/modules/tsilo/README b/modules/tsilo/README
> index 4790ad1..297c435 100644
> --- a/modules/tsilo/README
> +++ b/modules/tsilo/README
> @@ -10,7 +10,7 @@ Federico Cabiddu
> 
>     <federico.cabiddu at gmail.com>
> 
> -   Copyright © 2014 Federico Cabiddu
> +   Copyright © 2014 Federico Cabiddu
>       __________________________________________________________________
> 
>     Table of Contents
> @@ -33,7 +33,10 @@ Federico Cabiddu
>                4.2. ts_append(domain, ruri)
>                4.3. ts_append_to(tindex, tlabel, domain)
> 
> -        5. Statistics
> +        5. MI Commands
> +
> +              5.1. ts_dump
> +              5.2. ts_lookup
> 
>     List of Examples
> 
> @@ -62,19 +65,26 @@ Chapter 1. Admin Guide
>          4.2. ts_append(domain, ruri)
>          4.3. ts_append_to(tindex, tlabel, domain)
> 
> -   5. Statistics
> +   5. MI Commands
> +
> +        5.1. ts_dump
> +        5.2. ts_lookup
> 
>  1. Overview
> 
>     This modules provides transaction storage for the Kamailio SIP Server
> -   Platform. It stores in an internal table transactions for an user and
> -   add branches to them if new contacts are added.
> +   Platform. It stores in an internal table transactions for a Request-URI
> +   (R-URI) and add branches to them later if new contacts for the AOR are
> +   added.
> 
> -   For each message, the modules stores "Request-URI" ("R-URI"), URI and
> -   the internal transaction index and label.
> +   When the ts_store function is called, the modules stores the current
> +   transaction R-URI URI, index and label. Two functions (ts_append and
> +   ts_append_to) provide the ability to add new branches either to a
> +   specific transaction or to all of the transactions stored for a given
> +   R-URI.
> 
> -   When the transaction is destroyed (by the TM module, the transaction is
> -   removed from the module table.
> +   When a transaction is destroyed by the TM module, it is removed from
> +   the module's table too.
> 
>  2. Dependencies
> 
> @@ -105,7 +115,7 @@ Chapter 1. Admin Guide
>     must be a power of two, otherwise it will be rounded down to the
>     nearest power of two.
> 
> -   Default value is "2048".
> +   Default value is “2048”.
> 
>     Example 1.1. Set hash_size parameter
>  ...
> @@ -182,4 +192,23 @@ if (is_method("REGISTER")) {
>  }
>  ...
> 
> -5. Statistics
> +5. MI Commands
> +
> +   5.1. ts_dump
> +   5.2. ts_lookup
> +
> +5.1.  ts_dump
> +
> +   Dumps the entire content of the TSILO table
> +
> +   Parameters:
> +     * brief - (optional, may not be present); if equals to string
> +       “brief”, a brief dump will be done (only RURI, without the
> +       transaction(s) details)
> +
> +5.2.  ts_lookup
> +
> +   Dumps the transactions stored for the given RURI
> +
> +   Parameters:
> +     * ruri - RURI for which we want to show the transactions.
> diff --git a/modules/tsilo/doc/tsilo_admin.xml b/modules/tsilo/doc/tsilo_admin.xml
> index 4c35e69..36180d1 100644
> --- a/modules/tsilo/doc/tsilo_admin.xml
> +++ b/modules/tsilo/doc/tsilo_admin.xml
> @@ -17,17 +17,15 @@
>         <title>Overview</title>
>         <para>
>                 This modules provides transaction storage for the &kamailioname;. It
> -               stores in an internal table transactions for an user and add branches
> -               to them if new contacts are added.
> +               stores in an internal table transactions for a Request-URI (R-URI) and add branches
> +               to them later if new contacts for the AOR are added.
>         </para>
>         <para>
> -               For each message, the modules stores <quote>Request-URI</quote>
> -               (<quote>R-URI</quote>), &uri; and the internal transaction index
> -               and label.
> +               When the <emphasis>ts_store</emphasis> function is called, the modules stores the current transaction R-URI &uri;, index and label. Two functions (<emphasis>ts_append</emphasis> and <emphasis>ts_append_to</emphasis>) provide the ability to add new branches either to a specific transaction or to all of the transactions stored for a given R-URI.
>         </para>
>         <para>
> -               When the transaction is destroyed (by the <emphasis>TM</emphasis> module,
> -               the transaction is removed from the module table.
> +               When a transaction is destroyed by the <emphasis>TM</emphasis> module,
> +               it is removed from the module's table too.
>         </para>
>         </section>
>         <section>
> @@ -201,6 +199,36 @@ if (is_method("REGISTER")) {
>         </section>
> 
>         <section>
> -       <title>Statistics</title>
> +               <title>MI Commands</title>
> +               <section id="tsilo.mi.ts_dump">
> +                       <title>
> +                       <function moreinfo="none">ts_dump</function>
> +                       </title>
> +                       <para>
> +                       Dumps the entire content of the TSILO table
> +                       </para>
> +                       <para>Parameters: </para>
> +                       <itemizedlist>
> +                               <listitem><para>
> +                                       <emphasis>brief</emphasis> - (optional, may not be present); if
> +                                       equals to string <quote>brief</quote>, a brief dump will be
> +                                       done (only RURI, without the transaction(s) details)
> +                               </para></listitem>
> +                       </itemizedlist>
> +               </section>
> +               <section id="tsilo.mi.ts_lookup">
> +                       <title>
> +                       <function moreinfo="none">ts_lookup</function>
> +                       </title>
> +                       <para>
> +                       Dumps the transactions stored for the given RURI
> +                       </para>
> +                       <para>Parameters: </para>
> +                       <itemizedlist>
> +                               <listitem><para>
> +                                       <emphasis>ruri</emphasis> - RURI for which we want to show the transactions.
> +                               </para></listitem>
> +                       </itemizedlist>
> +               </section>
>         </section>
>  </chapter>
> diff --git a/modules/tsilo/ts_hash.c b/modules/tsilo/ts_hash.c
> index 089f425..6225db6 100644
> --- a/modules/tsilo/ts_hash.c
> +++ b/modules/tsilo/ts_hash.c
> @@ -162,7 +162,7 @@ void unlock_entry(ts_entry_t *entry) {
> 
>  void lock_entry_by_ruri(str* ruri)
>  {
> -        unsigned int sl;
> +       unsigned int sl;
> 
>         sl = core_hash(ruri, 0, 0) & (t_table->size-1);
>         ts_lock(t_table, &t_table->entries[sl]);
> diff --git a/modules/tsilo/ts_hash.h b/modules/tsilo/ts_hash.h
> index b895c26..bc7adf1 100644
> --- a/modules/tsilo/ts_hash.h
> +++ b/modules/tsilo/ts_hash.h
> @@ -26,8 +26,8 @@
>   * Module: \ref tsilo
>   */
> 
> -#ifndef _DIALOG_TS_HASH_H_
> -#define _DIALOG_TS_HASH_H_
> +#ifndef _TS_HASH_H_
> +#define _TS_HASH_H_
> 
>  #include "../../locking.h"
>  #include "../../lib/kmi/mi.h"
> @@ -64,10 +64,10 @@ typedef struct ts_urecord
>  /*! entries in the main transaction table */
>  typedef struct ts_entry
>  {
> -       int n;                          /*!< Number of elements in the collision slot */
> +       int n;                              /*!< Number of elements in the collision slot */
>         struct ts_urecord    *first;    /*!< urecord list */
> -       struct ts_urecord    *last;     /*!< optimisation, end of the urecord list */
> -       unsigned int       next_id;     /*!< next id */
> +       struct ts_urecord    *last;         /*!< optimisation, end of the urecord list */
> +       unsigned int       next_id;         /*!< next id */
>         unsigned int       lock_idx;    /*!< lock index */
>  } ts_entry_t;
> 
> @@ -75,13 +75,13 @@ typedef struct ts_entry
>  /*! main transaction table */
>  typedef struct ts_table
>  {
> -       unsigned int       size;        /*!< size of the dialog table */
> +       unsigned int       size;            /*!< size of the tsilo table */
>         struct ts_entry    *entries;    /*!< urecord hash table */
>         unsigned int       locks_no;    /*!< number of locks */
> -       gen_lock_set_t     *locks;      /*!< lock table */
> +       gen_lock_set_t     *locks;          /*!< lock table */
>  } ts_table_t;
> 
> -/*! global dialog table */
> +/*! global transactions table */
>  extern ts_table_t *t_table;
> 
>  /*!
> diff --git a/modules/tsilo/tsilo.c b/modules/tsilo/tsilo.c
> index 90eb292..9c404dd 100644
> --- a/modules/tsilo/tsilo.c
> +++ b/modules/tsilo/tsilo.c
> @@ -32,11 +32,13 @@
>  #include "../../modules/tm/tm_load.h"
>  #include "../../modules/registrar/api.h"
>  #include "../../dset.h"
> +#include "../../lib/kmi/mi.h"
> 
>  #include "ts_hash.h"
>  #include "ts_handlers.h"
>  #include "ts_append.h"
>  #include "ts_store.h"
> +#include "ts_mi.h"
> 
>  MODULE_VERSION
> 
> @@ -57,20 +59,24 @@ static int w_ts_append_to(struct sip_msg* msg, char *idx, char *lbl, char *d);
>  static int fixup_ts_append_to(void** param, int param_no);
>  static int w_ts_append(struct sip_msg* _msg, char *_table, char *_ruri);
>  static int fixup_ts_append(void** param, int param_no);
> -
>  static int w_ts_store(struct sip_msg* msg);
> 
> -
>  static cmd_export_t cmds[]={
>         {"ts_append_to", (cmd_function)w_ts_append_to,  3,
> -               fixup_ts_append_to, REQUEST_ROUTE | FAILURE_ROUTE },
> +               fixup_ts_append_to, 0, REQUEST_ROUTE | FAILURE_ROUTE },
>         {"ts_append", (cmd_function)w_ts_append,  2,
> -               fixup_ts_append, REQUEST_ROUTE | FAILURE_ROUTE },
> +               fixup_ts_append, 0, REQUEST_ROUTE | FAILURE_ROUTE },
>         {"ts_store", (cmd_function)w_ts_store,  0,
> -               0 , REQUEST_ROUTE | FAILURE_ROUTE },
> +               0 , 0, REQUEST_ROUTE | FAILURE_ROUTE },
>         {0,0,0,0,0}
>  };
> 
> +static mi_export_t mi_cmds[] = {
> +       { "ts_dump",            mi_tsilo_dump,          0,      0,      0 },
> +       { "ts_lookup",          mi_tsilo_lookup,        0,      0,      0 },
> +    { 0, 0, 0, 0, 0}
> +};
> +
>  static param_export_t params[]={
>         {"hash_size",   INT_PARAM,      &hash_size},
>         {0,0,0}
> @@ -80,13 +86,16 @@ static param_export_t params[]={
>  /** module exports */
>  struct module_exports exports= {
>         "tsilo",
> +    DEFAULT_DLFLAGS,
>         cmds,
> -       0, /* RPC methods */
>         params,
> +       0, /* exported statistics */
> +    mi_cmds,    /* exported MI functions */
> +    0,
> +    0,
>         mod_init,   /* module initialization function */
>         0,
>         (destroy_function) destroy,  /* destroy function */
> -       0,
>         0
>  };
> 
> @@ -97,6 +106,13 @@ static int mod_init(void)
>  {
>         unsigned int n;
> 
> +       /* register the MI commands */
> +       if(register_mi_mod(exports.name, mi_cmds)!=0)
> +    {
> +        LM_ERR("failed to register MI commands\n");
> +        return -1;
> +    }
> +
>         /* load the TM API */
>         if (load_tm_api(&_tmb)!=0) {
>                 LM_ERR("can't load TM API\n");
> 
> 
> 
> _______________________________________________
> sr-dev mailing list
> sr-dev at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
> 
> _______________________________________________
> sr-dev mailing list
> sr-dev at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-dev/attachments/20141112/307b84da/attachment-0001.html>


More information about the sr-dev mailing list