[sr-dev] git:master: domain: API framework to be used by other modules

Jan Janak jan at iptel.org
Fri Jul 17 11:37:13 CEST 2009


Module: sip-router
Branch: master
Commit: dd5490500f006f86e520958c5ca2646a1e3a96b7
URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=dd5490500f006f86e520958c5ca2646a1e3a96b7

Author: Jan Janak <jan at iptel.org>
Committer: Jan Janak <jan at 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}
 };
 




More information about the sr-dev mailing list