Module: sip-router
Branch: master
Commit: dd5490500f006f86e520958c5ca2646a1e3a96b7
URL:
http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=dd54905…
Author: Jan Janak <jan(a)iptel.org>
Committer: Jan Janak <jan(a)iptel.org>
Date: Fri Jul 17 00:15:39 2009 +0200
domain: API framework to be used by other modules
Add a new data structure and function bind_domain that can be used by
other modules to gain access to internal functions of domain module.
Implement inline function load_domain_api that does everything that
is necessary to make the API of the domain module available to the
caller.
---
modules_s/domain/domain_api.c | 35 ++++++++++++++++++++++++++
modules_s/domain/domain_api.h | 54 +++++++++++++++++++++++++++++++++++++++++
modules_s/domain/domain_mod.c | 2 +
3 files changed, 91 insertions(+), 0 deletions(-)
diff --git a/modules_s/domain/domain_api.c b/modules_s/domain/domain_api.c
new file mode 100644
index 0000000..c88e5c8
--- /dev/null
+++ b/modules_s/domain/domain_api.c
@@ -0,0 +1,35 @@
+/*
+ * Domain module internal API
+ *
+ * Copyright (C) 2002-2003 Juha Heinanen
+ *
+ * This file is part of sip-router, a free SIP server.
+ *
+ * sip-router 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
+ *
+ * sip-router 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 "domain_api.h"
+#include "../../dprint.h"
+#include "domain.h"
+
+
+int bind_domain(domain_api_t* api)
+{
+ if (api == NULL) {
+ ERR("Invalid parameter value\n");
+ return -1;
+ }
+ return 0;
+}
diff --git a/modules_s/domain/domain_api.h b/modules_s/domain/domain_api.h
new file mode 100644
index 0000000..16ddd1f
--- /dev/null
+++ b/modules_s/domain/domain_api.h
@@ -0,0 +1,54 @@
+/*
+ * Domain module internal API
+ *
+ * Copyright (C) 2002-2003 Juha Heinanen
+ *
+ * This file is part of sip-router, a free SIP server.
+ *
+ * sip-router 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
+ *
+ * sip-router 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 _DOMAIN_API_H
+#define _DOMAIN_API_H
+
+#include "../../sr_module.h"
+#include "../../dprint.h"
+
+typedef struct domain_api {
+
+} domain_api_t;
+
+typedef int (*bind_domain_f)(domain_api_t* api);
+int bind_domain(domain_api_t* api);
+
+static inline int load_domain_api(domain_api_t* api)
+{
+ bind_domain_f bind_domain;
+
+ bind_domain = (bind_domain_f)find_export("bind_domain", 0, 0);
+
+ if (bind_domain == NULL) {
+ ERR("Cannot import bind_domain function from domain module\n");
+ return -1;
+ }
+
+ if (bind_domain(api) == -1) {
+ return -1;
+ }
+ return 0;
+}
+
+
+#endif /* _DOMAIN_API_H */
diff --git a/modules_s/domain/domain_mod.c b/modules_s/domain/domain_mod.c
index 957973f..c7e0515 100644
--- a/modules_s/domain/domain_mod.c
+++ b/modules_s/domain/domain_mod.c
@@ -38,6 +38,7 @@
#include "../../parser/parse_from.h"
#include "../../parser/parse_uri.h"
#include "../../usr_avp.h"
+#include "domain_api.h"
#include "domain_rpc.h"
#include "hash.h"
#include "domain.h"
@@ -124,6 +125,7 @@ static cmd_export_t cmds[] = {
{"lookup_domain", lookup_domain, 2, lookup_domain_fixup,
REQUEST_ROUTE|FAILURE_ROUTE },
{"get_did", (cmd_function)get_did, 0, 0, 0},
+ {"bind_domain", (cmd_function)bind_domain, 0, 0, 0},
{0, 0, 0, 0, 0}
};