Переглянути джерело

registrar: exported save(...)/lookup(...) variants to kemi

Daniel-Constantin Mierla 9 роки тому
батько
коміт
d8f6b975f8
2 змінених файлів з 49 додано та 0 видалено
  1. 1 0
      modules/registrar/api.h
  2. 48 0
      modules/registrar/registrar.c

+ 1 - 0
modules/registrar/api.h

@@ -37,6 +37,7 @@ int regapi_save_uri(sip_msg_t *msg, str *table, int flags, str *uri);
 
 typedef int (*regapi_lookup_f)(sip_msg_t *msg, str *table);
 int regapi_lookup(sip_msg_t *msg, str *table);
+int regapi_registered(sip_msg_t *msg, str *table);
 
 typedef int (*regapi_lookup_uri_f)(sip_msg_t *msg, str *table, str *uri);
 int regapi_lookup_uri(sip_msg_t *msg, str *table, str *uri);

+ 48 - 0
modules/registrar/registrar.c

@@ -47,6 +47,7 @@
 #include "../../lib/srutils/sruid.h"
 #include "../../modules/sl/sl.h"
 #include "../../mod_fix.h"
+#include "../../kemi.h"
 
 #include "save.h"
 #include "api.h"
@@ -747,3 +748,50 @@ void default_expires_range_update(str* gname, str* name){
 void expires_range_update(str* gname, str* name){
 	update_stat(expire_range_stat, cfg_get(registrar, registrar_cfg, expires_range));
 }
+
+/**
+ *
+ */
+static sr_kemi_t sr_kemi_registrar_exports[] = {
+	{ str_init("registrar"), str_init("save"),
+		SR_KEMIP_INT, regapi_save,
+		{ SR_KEMIP_STR, SR_KEMIP_INT, SR_KEMIP_NONE,
+			SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE }
+	},
+	{ str_init("registrar"), str_init("save_uri"),
+		SR_KEMIP_INT, regapi_save_uri,
+		{ SR_KEMIP_STR, SR_KEMIP_INT, SR_KEMIP_STR,
+			SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE }
+	},
+	{ str_init("registrar"), str_init("lookup"),
+		SR_KEMIP_INT, regapi_lookup,
+		{ SR_KEMIP_STR, SR_KEMIP_NONE, SR_KEMIP_NONE,
+			SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE }
+	},
+	{ str_init("registrar"), str_init("lookup_uri"),
+		SR_KEMIP_INT, regapi_lookup_uri,
+		{ SR_KEMIP_STR, SR_KEMIP_STR, SR_KEMIP_NONE,
+			SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE }
+	},
+	{ str_init("registrar"), str_init("lookup_to_dset"),
+		SR_KEMIP_INT, regapi_lookup_to_dset,
+		{ SR_KEMIP_STR, SR_KEMIP_STR, SR_KEMIP_NONE,
+			SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE }
+	},
+	{ str_init("registrar"), str_init("registered"),
+		SR_KEMIP_INT, regapi_registered,
+		{ SR_KEMIP_STR, SR_KEMIP_NONE, SR_KEMIP_NONE,
+			SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE }
+	},
+
+	{ {0, 0}, {0, 0}, 0, NULL, { 0, 0, 0, 0, 0, 0 } }
+};
+
+/**
+ *
+ */
+int mod_register(char *path, int *dlflags, void *p1, void *p2)
+{
+	sr_kemi_modules_add(sr_kemi_registrar_exports);
+	return 0;
+}