[sr-dev] git:master:04cfb066: nat_traversal: exported functions to kemi framework

Daniel-Constantin Mierla miconda at gmail.com
Tue Dec 5 11:23:50 CET 2017


Module: kamailio
Branch: master
Commit: 04cfb0662be9cc429e66b79545daf578993dab1f
URL: https://github.com/kamailio/kamailio/commit/04cfb0662be9cc429e66b79545daf578993dab1f

Author: Daniel-Constantin Mierla <miconda at gmail.com>
Committer: Daniel-Constantin Mierla <miconda at gmail.com>
Date: 2017-12-05T11:23:00+01:00

nat_traversal: exported functions to kemi framework

---

Modified: src/modules/nat_traversal/nat_traversal.c

---

Diff:  https://github.com/kamailio/kamailio/commit/04cfb0662be9cc429e66b79545daf578993dab1f.diff
Patch: https://github.com/kamailio/kamailio/commit/04cfb0662be9cc429e66b79545daf578993dab1f.patch

---

diff --git a/src/modules/nat_traversal/nat_traversal.c b/src/modules/nat_traversal/nat_traversal.c
index ab1e33442c..ead4c696fe 100644
--- a/src/modules/nat_traversal/nat_traversal.c
+++ b/src/modules/nat_traversal/nat_traversal.c
@@ -66,6 +66,7 @@
 #include "../../core/parser/contact/parse_contact.h"
 #include "../../core/counters.h"
 #include "../../core/rand/kam_rand.h"
+#include "../../core/kemi.h"
 #include "../dialog/dlg_load.h"
 #include "../../modules/tm/tm_load.h"
 #include "../../modules/sl/sl.h"
@@ -204,9 +205,9 @@ typedef struct Keepalive_Params
 
 // Function prototypes
 //
-static int NAT_Keepalive(struct sip_msg *msg);
-static int FixContact(struct sip_msg *msg);
-static int ClientNatTest(struct sip_msg *msg, unsigned int tests);
+static int w_NAT_Keepalive(struct sip_msg *msg, char *p1, char *p2);
+static int w_FixContact(struct sip_msg *msg, char *p1, char *p2);
+static int w_ClientNatTest(struct sip_msg *msg, char *ptests, char *p2);
 
 static bool test_private_contact(struct sip_msg *msg);
 static bool test_source_address(struct sip_msg *msg);
@@ -270,9 +271,12 @@ static NatTest NAT_Tests[] = {
 sl_api_t slb;
 
 static cmd_export_t commands[] = {
-	{"nat_keepalive", (cmd_function)NAT_Keepalive, 0, NULL, 0, REQUEST_ROUTE},
-	{"fix_contact", (cmd_function)FixContact, 0, NULL, 0, ANY_ROUTE},
-	{"client_nat_test", (cmd_function)ClientNatTest, 1, fixup_uint_null, 0, ANY_ROUTE},
+	{"nat_keepalive", (cmd_function)w_NAT_Keepalive, 0, NULL, 0,
+		REQUEST_ROUTE},
+	{"fix_contact", (cmd_function)w_FixContact, 0, NULL, 0,
+		ANY_ROUTE},
+	{"client_nat_test", (cmd_function)w_ClientNatTest, 1, fixup_igp_null, 0,
+		ANY_ROUTE},
 	{0, 0, 0, 0, 0, 0}
 };
 
@@ -1462,6 +1466,10 @@ static int NAT_Keepalive(struct sip_msg *msg)
 	}
 }
 
+static int w_NAT_Keepalive(struct sip_msg *msg, char *p1, char *p2)
+{
+	return NAT_Keepalive(msg);
+}
 
 // Replace IP:Port in Contact field with the source address of the packet.
 static int FixContact(struct sip_msg *msg)
@@ -1534,8 +1542,12 @@ static int FixContact(struct sip_msg *msg)
 	return 1;
 }
 
+static int w_FixContact(struct sip_msg *msg, char *p1, char *p2)
+{
+	return FixContact(msg);
+}
 
-static int ClientNatTest(struct sip_msg *msg, unsigned int tests)
+static int ClientNatTest(struct sip_msg *msg, int tests)
 {
 	int i;
 
@@ -1548,6 +1560,17 @@ static int ClientNatTest(struct sip_msg *msg, unsigned int tests)
 	return -1; // all failed
 }
 
+static int w_ClientNatTest(struct sip_msg *msg, char *ptests, char *p2)
+{
+	int tests;
+
+	if(fixup_get_ivalue(msg, (gparam_t*)ptests, &tests)<0) {
+		LM_ERR("failed to get tests parameter\n");
+		return -1;
+	}
+
+	return ClientNatTest(msg, tests);
+}
 
 #define FROM_PREFIX "sip:keepalive@"
 #define MAX_BRANCHID 9999999
@@ -2103,3 +2126,34 @@ static int pv_get_source_uri(
 
 	return 0;
 }
+
+/**
+ *
+ */
+/* clang-format off */
+static sr_kemi_t sr_kemi_nat_traversal_exports[] = {
+	{ str_init("nat_traversal"), str_init("nat_keepalive"),
+		SR_KEMIP_INT, NAT_Keepalive,
+		{ SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE,
+			SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE }
+	},
+	{ str_init("nat_traversal"), str_init("fix_contact"),
+		SR_KEMIP_INT, FixContact,
+		{ SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE,
+			SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE }
+	},
+	{ str_init("nat_traversal"), str_init("client_nat_test"),
+		SR_KEMIP_INT, ClientNatTest,
+		{ SR_KEMIP_INT, SR_KEMIP_NONE, SR_KEMIP_NONE,
+			SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE }
+	},
+
+	{ {0, 0}, {0, 0}, 0, NULL, { 0, 0, 0, 0, 0, 0 } }
+};
+/* clang-format on */
+
+int mod_register(char *path, int *dlflags, void *p1, void *p2)
+{
+	sr_kemi_modules_add(sr_kemi_nat_traversal_exports);
+	return 0;
+}
\ No newline at end of file




More information about the sr-dev mailing list