[sr-dev] git:oej/permissionsrpc: Adding rpc for address reload

Olle E. Johansson oej at edvina.net
Fri Dec 21 23:18:46 CET 2012


Module: sip-router
Branch: oej/permissionsrpc
Commit: 7e95598b0d5f20fd28afd56922a2d8b85f2478d2
URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=7e95598b0d5f20fd28afd56922a2d8b85f2478d2

Author: Olle E. Johansson <oej at edvina.net>
Committer: Olle E. Johansson <oej at edvina.net>
Date:   Fri Dec 21 23:09:53 2012 +0100

Adding rpc for address reload

---

 modules_k/permissions/address.c     |   36 +++++++++++++++++++++++++++-------
 modules_k/permissions/mi.c          |   12 +++++++++++
 modules_k/permissions/mi.h          |    1 +
 modules_k/permissions/permissions.c |    6 +++++
 4 files changed, 47 insertions(+), 8 deletions(-)

diff --git a/modules_k/permissions/address.c b/modules_k/permissions/address.c
index 5dbe547..501d59e 100644
--- a/modules_k/permissions/address.c
+++ b/modules_k/permissions/address.c
@@ -1,5 +1,5 @@
+
 /*
- *
  * allow_address related functions
  *
  * Copyright (C) 2006 Juha Heinanen
@@ -136,14 +136,34 @@ int reload_address_table(void)
 	for (i = 0; i < RES_ROW_N(res); i++) {
 		val = ROW_VALUES(row + i);
 		/* basic checks to db values */
-		if ((ROW_N(row + i) != 5)
-				|| (VAL_TYPE(val) != DB1_INT) || VAL_NULL(val)
-				|| (VAL_INT(val) <= 0)
-				|| (VAL_TYPE(val + 1) != DB1_STRING) || VAL_NULL(val + 1)
-				|| (VAL_TYPE(val + 2) != DB1_INT) || VAL_NULL(val + 2)
-				|| (VAL_TYPE(val + 3) != DB1_INT) || VAL_NULL(val + 3))
+		if (ROW_N(row + i) != 5)
+		{
+			LM_DBG("failure during checks of db address table: Colums %d - expected 5\n", ROW_N(row + i));
+			goto dberror;
+		}
+		if ((VAL_TYPE(val) != DB1_INT) || VAL_NULL(val) || (VAL_INT(val) <= 0))
+		{
+			LM_DBG("failure during checks of database value 1 (group) in address table\n");
+			goto dberror;
+		}
+		if ((VAL_TYPE(val + 1) != DB1_STRING) && (VAL_TYPE(val + 1) != DB1_STR))
+		{
+			LM_DBG("failure during checks of database value 2 (IP address) in address table - not a string value\n");
+			goto dberror;
+		}
+		if (VAL_NULL(val + 1))
+		{
+			LM_DBG("failure during checks of database value 2 (IP address) in address table - NULL value not permitted\n");
+			goto dberror;
+		}
+		if ((VAL_TYPE(val + 2) != DB1_INT) || VAL_NULL(val + 2))
+		{
+			LM_DBG("failure during checks of database value 3 (subnet size/CIDR) in address table\n");
+			goto dberror;
+		}
+		if ((VAL_TYPE(val + 3) != DB1_INT) || VAL_NULL(val + 3))
 		{
-			LM_DBG("failure during checks of db values\n");
+			LM_DBG("failure during checks of database value 4 (port) in address table\n");
 			goto dberror;
 		}
 		gid = VAL_UINT(val);
diff --git a/modules_k/permissions/mi.c b/modules_k/permissions/mi.c
index 9c3fb1a..22a8d47 100644
--- a/modules_k/permissions/mi.c
+++ b/modules_k/permissions/mi.c
@@ -102,6 +102,18 @@ struct mi_root* mi_address_reload(struct mi_root *cmd_tree, void *param)
     }
 }
 
+/*! \brief
+ * RPC function to reload address table
+ */
+void rpc_address_reload(rpc_t* rpc, void* c) {
+	if (reload_address_table () != 1) {
+		rpc->fault(c, 500, "Reload failed.");
+		return;
+	}
+
+	rpc->printf(c, "Reload OK");
+	return;
+}
 
 /*
  * MI function to print address entries from current hash table
diff --git a/modules_k/permissions/mi.h b/modules_k/permissions/mi.h
index f37f4d5..5b271bd 100644
--- a/modules_k/permissions/mi.h
+++ b/modules_k/permissions/mi.h
@@ -45,6 +45,7 @@ void rpc_trusted_reload(rpc_t* rpc, void* c);
 struct mi_root* mi_trusted_dump(struct mi_root *cmd, void *param);
 
 struct mi_root* mi_address_reload(struct mi_root *cmd, void *param);
+void rpc_address_reload(rpc_t* rpc, void* c);
 
 struct mi_root* mi_address_dump(struct mi_root *cmd, void *param);
 
diff --git a/modules_k/permissions/permissions.c b/modules_k/permissions/permissions.c
index 6e4fef0..e96a271 100644
--- a/modules_k/permissions/permissions.c
+++ b/modules_k/permissions/permissions.c
@@ -989,8 +989,14 @@ static const char* rpc_trusted_reload_doc[2] = {
 	0
 };
 
+static const char* rpc_address_reload_doc[2] = {
+	"Reload permissions address table",
+	0
+};
+
 rpc_export_t permissions_rpc[] = {
 	{"permissions.trustedreload", rpc_trusted_reload, rpc_trusted_reload_doc, 0},
+	{"permissions.addressreload", rpc_address_reload, rpc_address_reload_doc, 0},
 	{0, 0, 0, 0}
 };
 




More information about the sr-dev mailing list