Browse Source

pv: export some PV functions

Camille Oudot 9 years ago
parent
commit
a5286513c5
3 changed files with 82 additions and 1 deletions
  1. 4 1
      modules/pv/pv.c
  2. 41 0
      modules/pv/pv_api.c
  3. 37 0
      modules/pv/pv_api.h

+ 4 - 1
modules/pv/pv.c

@@ -40,6 +40,7 @@
 #ifdef WITH_XAVP
 #include "pv_xavp.h"
 #endif
+#include "pv_api.h"
 
 MODULE_VERSION
 
@@ -502,6 +503,7 @@ static int w_var_to_xavp(sip_msg_t *msg, char *p1, char *p2);
 static int w_xavp_to_var(sip_msg_t *msg, char *p1);
 
 static int pv_init_rpc(void);
+int pv_register_api(pv_api_t*);
 
 static cmd_export_t cmds[]={
 	{"pv_isset",  (cmd_function)pv_isset,  1, fixup_pvar_null, 0, 
@@ -533,7 +535,8 @@ static cmd_export_t cmds[]={
 		ANY_ROUTE },
 	{"sbranch_reset",     (cmd_function)w_sbranch_reset,     0, 0, 0,
 		ANY_ROUTE },
-
+	/* API exports */
+	{"pv_register_api",   (cmd_function)pv_register_api,     NO_SCRIPT, 0, 0},
 	{0,0,0,0,0,0}
 };
 

+ 41 - 0
modules/pv/pv_api.c

@@ -0,0 +1,41 @@
+/**
+ * Copyright 2016 (C) Orange
+ * <[email protected]>
+ *
+ * This file is part of Kamailio, a free SIP server.
+ *
+ * This file is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version
+ *
+ *
+ * This file is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ */
+
+#include "pv_api.h"
+#include "pv_core.h"
+
+int pv_register_api(pv_api_t* api)
+{
+	if (!api)
+		return 0;
+
+	api->get_body_size = pv_get_body_size;
+	api->get_hdr = pv_get_hdr;
+	api->get_msg_body = pv_get_msg_body;
+	api->get_msg_buf = pv_get_msg_buf;
+	api->get_msg_len = pv_get_msg_len;
+	api->get_reason = pv_get_reason;
+	api->get_status = pv_get_status;
+	api->parse_hdr_name = pv_parse_hdr_name;
+	return 1;
+}

+ 37 - 0
modules/pv/pv_api.h

@@ -0,0 +1,37 @@
+/**
+ * Copyright 2016 (C) Orange
+ * <[email protected]>
+ *
+ * This file is part of Kamailio, a free SIP server.
+ *
+ * This file is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version
+ *
+ *
+ * This file is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ */
+
+#include "../../pvar.h"
+
+typedef struct _pv_api {
+	pv_getf_t get_reason;
+	pv_getf_t get_hdr;
+	pv_parse_name_f parse_hdr_name;
+	pv_getf_t get_status;
+	pv_getf_t get_msg_body;
+	pv_getf_t get_body_size;
+	pv_getf_t get_msg_buf;
+	pv_getf_t get_msg_len;
+} pv_api_t;
+
+typedef int (*pv_register_api_t)(pv_api_t*);