Module: sip-router Branch: pd/outbound Commit: 82de81e6becd747f84f67b360c510e3edbeeedf3 URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=82de81e6...
Author: Peter Dunkley peter.dunkley@crocodile-rcs.com Committer: Peter Dunkley peter.dunkley@crocodile-rcs.com Date: Tue Aug 14 09:15:51 2012 +0100
modules_k/outbound: added stub module for Outbound
---
modules_k/outbound/Makefile | 27 +++++ modules_k/outbound/README | 67 +++++++++++++ modules_k/outbound/api.h | 52 ++++++++++ modules_k/outbound/doc/Makefile | 4 + modules_k/outbound/doc/outbound.xml | 33 ++++++ modules_k/outbound/doc/outbound_admin.xml | 59 +++++++++++ modules_k/outbound/ob_mod.c | 151 +++++++++++++++++++++++++++++ 7 files changed, 393 insertions(+), 0 deletions(-)
diff --git a/modules_k/outbound/Makefile b/modules_k/outbound/Makefile new file mode 100644 index 0000000..148a900 --- /dev/null +++ b/modules_k/outbound/Makefile @@ -0,0 +1,27 @@ +# $Id$ +# +# +# WARNING: do not run this directly, it should be run by the master Makefile + +include ../../Makefile.defs +auto_gen= +NAME=outbound.so + +BUILDER = $(shell which pkg-config) +ifeq ($(BUILDER),) + DEFS+= -I$(LOCALBASE)/ssl/include + LIBS= -L$(LOCALBASE)/lib -L$(LOCALBASE)/ssl/lib \ + -L$(LOCALBASE)/lib64 -L$(LOCALBASE)/ssl/lib64 \ + -lssl +else + DEFS+= $(shell pkg-config --cflags libssl) + LIBS= $(shell pkg-config --libs libssl) +endif + +DEFS+=-DOPENSER_MOD_INTERFACE + +SERLIBPATH=../../lib +SER_LIBS+=$(SERLIBPATH)/kcore/kcore +SER_LIBS+=$(SERLIBPATH)/kmi/kmi + +include ../../Makefile.modules diff --git a/modules_k/outbound/README b/modules_k/outbound/README new file mode 100644 index 0000000..7feab22 --- /dev/null +++ b/modules_k/outbound/README @@ -0,0 +1,67 @@ +Outbound Module + +Peter Dunkley + + Crocodile RCS Ltd + + Copyright © 2012 Crocodile RCS Ltd + __________________________________________________________________ + + Table of Contents + + 1. Admin Guide + + 1. Overview + 2. Dependencies + + 2.1. Kamailio Modules + 2.2. External Libraries or Applications + + 3. Parameters + 4. Functions + 5. MI Commands + +Chapter 1. Admin Guide + + Table of Contents + + 1. Overview + 2. Dependencies + + 2.1. Kamailio Modules + 2.2. External Libraries or Applications + + 3. Parameters + 4. Functions + 5. MI Commands + +1. Overview + + ... + +2. Dependencies + + 2.1. Kamailio Modules + 2.2. External Libraries or Applications + +2.1. Kamailio Modules + + ... + +2.2. External Libraries or Applications + + The following libraries must be installed before running Kamailio with + this module loaded: + * OpenSSL. + +3. Parameters + + ... + +4. Functions + + ... + +5. MI Commands + + ... diff --git a/modules_k/outbound/api.h b/modules_k/outbound/api.h new file mode 100644 index 0000000..117ce49 --- /dev/null +++ b/modules_k/outbound/api.h @@ -0,0 +1,52 @@ +/* + * $Id$ + * + * Copyright (C) 2012 Crocodile RCS Ltd + * + * This file is part of Kamailio, a free SIP server. + * + * Kamailio 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 + * + * Kamailio 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#ifndef OB_API_H +#define OB_API_H + +typedef int (*ob_fn1_t)(int, int, int); +typedef int (*ob_fn2_t)(int, int, int); +typedef int (*ob_fn3_t)(int, int, int); + +typedef struct ob_binds { + ob_fn1_t ob_fn1; + ob_fn2_t ob_fn2; + ob_fn3_t ob_fn3; +} ob_api_t; + +typedef int (*bind_ob_f)(ob_api_t*); + +int bind_ob(struct ob_binds*); + +inline static int ob_load_api(ob_api_t *pxb) +{ + bind_ob_f bind_ob_exports; + if (!(bind_ob_exports = (bind_ob_f)find_export("bind_ob", 1, 0))) + { + LM_ERR("Failed to import bind_ob\n"); + return -1; + } + return bind_ob_exports(pxb); +} + +#endif /* OB_API_H */ diff --git a/modules_k/outbound/doc/Makefile b/modules_k/outbound/doc/Makefile new file mode 100644 index 0000000..2b088ac --- /dev/null +++ b/modules_k/outbound/doc/Makefile @@ -0,0 +1,4 @@ +docs = outbound.xml + +docbook_dir = ../../../docbook +include $(docbook_dir)/Makefile.module diff --git a/modules_k/outbound/doc/outbound.xml b/modules_k/outbound/doc/outbound.xml new file mode 100644 index 0000000..fcf307c --- /dev/null +++ b/modules_k/outbound/doc/outbound.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding='ISO-8859-1'?> +<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" +"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [ + +<!-- Include general documentation entities --> +<!ENTITY % docentities SYSTEM "../../../docbook/entities.xml"> +%docentities; + +]> + +<book xmlns:xi="http://www.w3.org/2001/XInclude"> + <bookinfo> + <title>Outbound Module</title> + <productname class="trade">&kamailioname;</productname> + <authorgroup> + <author> + <firstname>Peter</firstname> + <surname>Dunkley</surname> + <affiliation><orgname>Crocodile RCS Ltd</orgname></affiliation> + <address> + <email>peter.dunkley@crocodile-rcs.com</email> + </address> + </author> + </authorgroup> + <copyright> + <year>2012</year> + <holder>Crocodile RCS Ltd</holder> + </copyright> + </bookinfo> + <toc></toc> + + <xi:include href="outbound_admin.xml"/> +</book> diff --git a/modules_k/outbound/doc/outbound_admin.xml b/modules_k/outbound/doc/outbound_admin.xml new file mode 100644 index 0000000..0a08053 --- /dev/null +++ b/modules_k/outbound/doc/outbound_admin.xml @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding='ISO-8859-1'?> +<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" +"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [ + +<!-- Include general documentation entities --> +<!ENTITY % docentities SYSTEM "../../../docbook/entities.xml"> +%docentities; + +]> +<!-- Module User's Guide --> + +<chapter> + + <title>&adminguide;</title> + + <section> + <title>Overview</title> + <para>...</para> + </section> + + <section> + <title>Dependencies</title> + <section> + <title>&kamailio; Modules</title> + <para>...</para> + </section> + + <section> + <title>External Libraries or Applications</title> + <para> + The following libraries must be installed before running + &kamailio; with this module loaded: + <itemizedlist> + <listitem> + <para><emphasis>OpenSSL</emphasis>.</para> + </listitem> + </itemizedlist> + </para> + </section> + </section> + + + <section> + <title>Parameters</title> + <para>...</para> + </section> + + <section> + <title>Functions</title> + <para>...</para> + </section> + + <section> + <title>MI Commands</title> + <para>...</para> + </section> + +</chapter> + diff --git a/modules_k/outbound/ob_mod.c b/modules_k/outbound/ob_mod.c new file mode 100644 index 0000000..858dac1 --- /dev/null +++ b/modules_k/outbound/ob_mod.c @@ -0,0 +1,151 @@ +/* + * $Id$ + * + * Copyright (C) 2012 Crocodile RCS Ltd + * + * This file is part of Kamailio, a free SIP server. + * + * Kamailio 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 + * + * Kamailio 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include "../../dprint.h" +#include "../../sr_module.h" +#include "../../lib/kcore/kstats_wrapper.h" +#include "../../lib/kmi/mi.h" + +#include "api.h" + +MODULE_VERSION + +static int mod_init(void); +static int child_init(int rank); +static void destroy(void); + +static int ob_force_bflag = -1; +static str ob_key = {0, 0}; + +static cmd_export_t cmds[]= +{ + { "bind_ob", (cmd_function) bind_ob, + 1, 0, 0, + 0 }, + { 0, 0, 0, 0, 0, 0 } +}; + +static param_export_t params[]= +{ + { "force_outbound_bflag", INT_PARAM, &ob_force_bflag }, + { "flow_token_key", STR_PARAM, &ob_key.s}, + { 0, 0, 0 } +}; + +static stat_export_t stats[] = +{ + { 0, 0, 0 } +}; + +static mi_export_t mi_cmds[] = +{ + { 0, 0, 0, 0, 0 } +}; + +struct module_exports exports= +{ + "outbound", + DEFAULT_DLFLAGS, /* dlopen flags */ + cmds, /* Exported functions */ + params, /* Exported parameters */ + stats, /* exported statistics */ + mi_cmds, /* exported MI functions */ + 0, /* exported pseudo-variables */ + 0, /* extra processes */ + mod_init, /* module initialization function */ + 0, /* response function */ + destroy, /* destroy function */ + child_init /* per-child initialization function */ +}; + +static int mod_init(void) +{ + if (register_module_stats(exports.name, stats) != 0) + { + LM_ERR("registering core statistics\n"); + return -1; + } + + if (register_mi_mod(exports.name, mi_cmds) != 0) + { + LM_ERR("registering MI commands\n"); + return -1; + } + + if (ob_force_bflag == -1) + { + LM_ERR("force_outbound_bflag not set\n"); + return -1; + } + + if (ob_key.s == 0) + { + LM_ERR("flow_token_key not set\n"); + return -1; + } + else + ob_key.len = strlen(ob_key.s); + + return 0; +} + +static int child_init(int rank) +{ + /* TODO */ + return 0; +} + +static void destroy(void) +{ + /* TODO */ +} + +int ob_fn1(int p1, int p2, int p3) +{ + return 0; +} + +int ob_fn2(int p1, int p2, int p3) +{ + return 0; +} + +int ob_fn3(int p1, int p2, int p3) +{ + return 0; +} + +int bind_ob(struct ob_binds *pxb) +{ + if (pxb == NULL) + { + LM_WARN("bind_outbound: Cannot load outbound API into NULL pointer\n"); + return -1; + } + + pxb->ob_fn1 = ob_fn1; + pxb->ob_fn2 = ob_fn2; + pxb->ob_fn3 = ob_fn3; + + return 0; +}