Module: sip-router Branch: admorten/sca Commit: ea9983d2346d5789ebb17f9eb58626e0967ed6c1 URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=ea9983d2...
Author: Juha Heinanen jh@tutpro.com Committer: Andrew Mortensen admorten@isc.upenn.edu Date: Wed May 1 11:54:20 2013 +0300
modules/mtree: added mtree.reload rcp command
---
modules/mtree/README | 15 ++++++++- modules/mtree/doc/mtree_admin.xml | 12 ++++++++ modules/mtree/mtree_mod.c | 57 +++++++++++++++++++++++++++++++++++++ 3 files changed, 82 insertions(+), 2 deletions(-)
diff --git a/modules/mtree/README b/modules/mtree/README index 05f3422..d548e89 100644 --- a/modules/mtree/README +++ b/modules/mtree/README @@ -20,9 +20,9 @@ Juha Heinanen
- Copyright � 2010 Daniel-Constantin Mierla (asipto.com) + Copyright (c) 2010 Daniel-Constantin Mierla (asipto.com)
- Copyright � 2011 Juha Heinanen + Copyright (c) 2011 Juha Heinanen __________________________________________________________________
Table of Contents @@ -64,6 +64,7 @@ Juha Heinanen 6. RPC Commands
6.1. mtree.summary + 6.2. mtree.reload
List of Examples
@@ -121,6 +122,7 @@ Chapter 1. Admin Guide 6. RPC Commands
6.1. mtree.summary + 6.2. mtree.reload
1. Overview
@@ -375,9 +377,18 @@ mt_match("mytree", "$rU", "0"); 6. RPC Commands
6.1. mtree.summary + 6.2. mtree.reload
6.1. mtree.summary
List usage summary for all trees.
Parameters: none. + +6.2. mtree.reload + + Reload mtree from database to memory. + + Parameters: + * _mtree_ + - name of mtree or empty string meaning all mtrees diff --git a/modules/mtree/doc/mtree_admin.xml b/modules/mtree/doc/mtree_admin.xml index 62154f0..0d81e72 100644 --- a/modules/mtree/doc/mtree_admin.xml +++ b/modules/mtree/doc/mtree_admin.xml @@ -428,6 +428,18 @@ mt_match("mytree", "$rU", "0"); </para> <para>Parameters: none.</para> </section> + <section> + <title> + <function moreinfo="none">mtree.reload</function> + </title> + <para> + Reload mtree from database to memory. + </para> + <para>Parameters:</para> + <itemizedlist> + <listitem><para>_mtree_</para> - name of mtree or empty string meaning all mtrees</listitem> + </itemizedlist> + </section> </section><!-- RPC commands -->
</chapter> diff --git a/modules/mtree/mtree_mod.c b/modules/mtree/mtree_mod.c index ac22d48..464f1c5 100644 --- a/modules/mtree/mtree_mod.c +++ b/modules/mtree/mtree_mod.c @@ -1044,8 +1044,65 @@ static const char* rpc_mtree_summary_doc[2] = { 0 };
+void rpc_mtree_reload(rpc_t* rpc, void* c) +{ + str tname = {0, 0}; + m_tree_t *pt; + + if(db_table.len>0) + { + /* re-loading all information from database */ + if(mt_load_db_trees()!=0) + { + LM_ERR("cannot re-load mtrees from database\n"); + goto error; + } + } else { + if(!mt_defined_trees()) + { + LM_ERR("empty mtree list\n"); + goto error; + } + + /* read tree name */ + if (rpc->scan(c, "S", &tname) != 1) { + rpc->fault(c, 500, "Failed to get table name parameter"); + return; + } + + pt = mt_get_first_tree(); + + while(pt!=NULL) + { + if(tname.s==NULL + || (tname.s!=NULL && pt->tname.len>=tname.len + && strncmp(pt->tname.s, tname.s, tname.len)==0)) + { + /* re-loading table from database */ + if(mt_load_db(&pt->tname)!=0) + { + LM_ERR("cannot re-load mtree from database\n"); + goto error; + } + } + pt = pt->next; + } + } + + return; + +error: + rpc->fault(c, 500, "Mtree Reload Failed"); +} + +static const char* rpc_mtree_reload_doc[2] = { + "Reload mtrees from database to memory", + 0 +}; + rpc_export_t mtree_rpc[] = { {"mtree.summary", rpc_mtree_summary, rpc_mtree_summary_doc, 0}, + {"mtree.reload", rpc_mtree_reload, rpc_mtree_reload_doc, 0}, {0, 0, 0, 0} };