Hello,
I just figured that the kamailio interface in shared modules (such as
db_berkeley and db_flatstore) wouldn't work. Such modules are defined with
-DSER_MOD_INTERFACE and thus use the module_exports structure from SER, which
does not have the MI structure entry.
So although such modules have all the MI commands and they link with libkmi,
none of the management functions gets exported through the module API.
Is there any solution to this yet?
Jan.
Module: sip-router
Branch: janakj/oracle DELETED
Commit: aad1137e2ea0cdc92201e7b30fda5429c31c9987
URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=aad1137…
Author: Jan Janak <jan(a)iptel.org>
Committer: Jan Janak <jan(a)iptel.org>
Date: Mon Feb 16 15:18:04 2009 +0100
Merge branch 'master' of ssh://janakj@git.sip-router.org/sip-router into oracle
* 'master' of ssh://janakj@git.sip-router.org/sip-router:
SER replaced with SIP Router in the doxygen main file.
---
Module: sip-router
Branch: janakj/ldap DELETED
Commit: a5ec520efadd627420028d1ffecba98575872299
URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=a5ec520…
Author: Jan Janak <jan(a)iptel.org>
Committer: Jan Janak <jan(a)iptel.org>
Date: Mon Feb 16 15:18:01 2009 +0100
Merge branch 'master' of ssh://janakj@git.sip-router.org/sip-router into ldap
* 'master' of ssh://janakj@git.sip-router.org/sip-router:
SER replaced with SIP Router in the doxygen main file.
---
Module: sip-router
Branch: janakj/postgres DELETED
Commit: f0546a246d0098405b61a64ca0fbaf32bbb5373f
URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=f0546a2…
Author: Jan Janak <jan(a)iptel.org>
Committer: Jan Janak <jan(a)iptel.org>
Date: Wed Feb 18 14:32:18 2009 +0100
Integrate functions and parameters from kamailio sources.
This patch adds db_bind_api function from kamailio sources to the list
of exported functions. Also we call the mod_init function from kamailio
sources at the and of the mod_init function in pg_mod.c. To make this
possible I added a new header file and removed static from the mod_init
function declaration.
---
modules/db_postgres/km_db_postgres.c | 9 ++-----
modules/db_postgres/km_db_postgres.h | 39 ++++++++++++++++++++++++++++++++++
modules/db_postgres/pg_mod.c | 4 ++-
3 files changed, 45 insertions(+), 7 deletions(-)
diff --git a/modules/db_postgres/km_db_postgres.c b/modules/db_postgres/km_db_postgres.c
index c3df575..ffe9230 100644
--- a/modules/db_postgres/km_db_postgres.c
+++ b/modules/db_postgres/km_db_postgres.c
@@ -38,14 +38,11 @@
#include "../../lib/srdb1/db_con.h"
#include "../../lib/srdb1/db.h"
#include "km_dbase.h"
+#include "km_db_postgres.h"
/*MODULE_VERSION*/
-int db_postgres_bind_api(db_func_t *dbb);
-
-static int mod_init(void);
-
/*
* PostgreSQL database module interface
*/
@@ -66,14 +63,14 @@ struct kam_module_exports kam_exports = {
0, /* exported MI functions */
0, /* exported pseudo-variables */
0, /* extra processes */
- mod_init, /* module initialization function */
+ km_postgres_mod_init, /* module initialization function */
0, /* response function*/
0, /* destroy function */
0 /* per-child init function */
};
-static int mod_init(void)
+int km_postgres_mod_init(void)
{
return 0;
}
diff --git a/modules/db_postgres/km_db_postgres.h b/modules/db_postgres/km_db_postgres.h
new file mode 100644
index 0000000..8959417
--- /dev/null
+++ b/modules/db_postgres/km_db_postgres.h
@@ -0,0 +1,39 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) 2001-2003 FhG Fokus
+ * Copyright (C) 2008 1&1 Internet AG
+ *
+ * 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
+ */
+
+/*! \file
+ * \brief DB_POSTGRES :: Core
+ * \ingroup db_postgres
+ * Module: \ref db_postgres
+ */
+
+#ifndef _KM_DB_POSTGRES_H
+#define _KM_DB_POSTGRES_H
+
+#include "../../lib/srdb1/db.h"
+
+int db_postgres_bind_api(db_func_t *dbb);
+
+int km_postgres_mod_init(void);
+
+#endif /* _KM_DB_POSTGRES_H */
diff --git a/modules/db_postgres/pg_mod.c b/modules/db_postgres/pg_mod.c
index 1bc4ad4..3c1e2d9 100644
--- a/modules/db_postgres/pg_mod.c
+++ b/modules/db_postgres/pg_mod.c
@@ -42,6 +42,7 @@
#include "pg_cmd.h"
#include "pg_res.h"
#include "pg_fld.h"
+#include "km_db_postgres.h"
#include "../../sr_module.h"
@@ -77,6 +78,7 @@ static cmd_export_t cmds[] = {
{"db_next", (cmd_function)pg_cmd_next, 0, 0, 0},
{"db_setopt", (cmd_function)pg_setopt, 0, 0, 0},
{"db_getopt", (cmd_function)pg_getopt, 0, 0, 0},
+ {"db_bind_api", (cmd_function)db_postgres_bind_api, 0, 0, 0},
{0, 0, 0, 0, 0}
};
@@ -538,7 +540,7 @@ static int pg_mod_init(void)
}
return -1;
#endif /* PG_TEST */
- return 0;
+ return km_postgres_mod_init();
}
/** @} */
Here is a short summary of my database driver integration attempt.
The following db driver modules have been merged from both (kamailio and ser),
these modules should work with both projects and they have been merged into
the sip-router master branch:
* db_berkeley
* db_flatstore
* db_mysql
* db_postgres
I have verified that all the modules above can be compiled in sip-router and
that they can be loaded and used. Two modules, db_flatstore and db_berkeley,
contain support for kamailio MI interface. The interface wouldn't work right
now because I could not export MI functions with the current state of
sip-router module interface. All the functions are there but they won't be
made available to the MI interface.
Then there are some database drivers that I haven' integrated because it does
not make much sense right now:
* oracle in ser and db_oracle in kamailio, the ser module currently does not
work
* dbtext in ser and db_text in kamailio, the ser module currently does not
work
And finally db_unixodbc module in kamailio does not have an equivalent in ser
so we can keep it where it is right now. I would like to extend the module
with support for libsrdb2 in the future and make it work with sip-router as
well.
Jan.