Răsfoiți Sursa

enum: exported functions to kemi framework

Daniel-Constantin Mierla 8 ani în urmă
părinte
comite
d697cd55be
3 a modificat fișierele cu 193 adăugiri și 1 ștergeri
  1. 95 0
      src/modules/enum/enum.c
  2. 17 0
      src/modules/enum/enum.h
  3. 81 1
      src/modules/enum/enum_mod.c

+ 95 - 0
src/modules/enum/enum.c

@@ -429,6 +429,14 @@ int is_from_user_enum_0(struct sip_msg *_msg, char *_str1, char *_str2)
 	return is_from_user_enum_helper(_msg, &suffix, &service);
 }
 
+/**
+ *
+ */
+int ki_is_from_user_enum(sip_msg_t *msg)
+{
+	return is_from_user_enum_helper(msg, &suffix, &service);
+}
+
 /*
  * Call is_from_user_enum_2 with given suffix and default service.
  */
@@ -444,6 +452,14 @@ int is_from_user_enum_1(struct sip_msg *_msg, char *_suffix, char *_str2)
 	return is_from_user_enum_helper(_msg, &vsuffix, &service);
 }
 
+/**
+ *
+ */
+int ki_is_from_user_enum_suffix(sip_msg_t *msg, str *vsuffix)
+{
+	return is_from_user_enum_helper(msg, vsuffix, &service);
+}
+
 /*
  * Check if from user is a valid enum based user, and check to make sure
  * that the src_ip == an srv record that maps to the enum from user.
@@ -465,6 +481,15 @@ int is_from_user_enum_2(struct sip_msg *_msg, char *_suffix, char *_service)
 	return is_from_user_enum_helper(_msg, &vsuffix, &vservice);
 }
 
+/**
+ *
+ */
+int ki_is_from_user_enum_suffix_service(sip_msg_t *msg, str *vsuffix,
+		str *vservice)
+{
+	return is_from_user_enum_helper(msg, vsuffix, vservice);
+}
+
 /* 
  * Add parameter to URI.
  */
@@ -734,6 +759,13 @@ int enum_query_0(struct sip_msg *_msg, char *_str1, char *_str2)
 	return enum_query(_msg, &suffix, &service);
 }
 
+/**
+ *
+ */
+int ki_enum_query(sip_msg_t *msg)
+{
+	return enum_query(msg, &suffix, &service);
+}
 
 /*
  * Call enum_query_2 with given suffix and default service.
@@ -750,6 +782,13 @@ int enum_query_1(struct sip_msg *_msg, char *_suffix, char *_str2)
 	return enum_query(_msg, &vsuffix, &service);
 }
 
+/**
+ *
+ */
+int ki_enum_query_suffix(sip_msg_t *msg, str *vsuffix)
+{
+	return enum_query(msg, vsuffix, &service);
+}
 
 /*
  * Call enum_query_2 with given suffix and service.
@@ -772,6 +811,13 @@ int enum_query_2(struct sip_msg *_msg, char *_suffix, char *_service)
 	return enum_query(_msg, &vsuffix, &vservice);
 }
 
+/**
+ *
+ */
+int ki_enum_query_suffix_service(sip_msg_t *msg, str *vsuffix, str *vservice)
+{
+	return enum_query(msg, vsuffix, vservice);
+}
 
 /*
  * See documentation in README file.
@@ -982,6 +1028,14 @@ int i_enum_query_0(struct sip_msg *_msg, char *_suffix, char *_service)
 	return i_enum_query_helper(_msg, &i_suffix, &service);
 }
 
+/**
+ *
+ */
+int ki_i_enum_query(sip_msg_t *msg)
+{
+	return i_enum_query_helper(msg, &suffix, &service);
+}
+
 /*
  * Call enum_query_2 with given suffix and default service.
  */
@@ -997,6 +1051,14 @@ int i_enum_query_1(struct sip_msg *_msg, char *_suffix, char *_service)
 	return i_enum_query_helper(_msg, &vsuffix, &service);
 }
 
+/**
+ *
+ */
+int ki_i_enum_query_suffix(sip_msg_t *msg, str *vsuffix)
+{
+	return i_enum_query_helper(msg, vsuffix, &service);
+}
+
 int i_enum_query_2(struct sip_msg *_msg, char *_suffix, char *_service)
 {
 	str vsuffix, vservice;
@@ -1015,6 +1077,14 @@ int i_enum_query_2(struct sip_msg *_msg, char *_suffix, char *_service)
 	return i_enum_query_helper(_msg, &vsuffix, &vservice);
 }
 
+/**
+ *
+ */
+int ki_i_enum_query_suffix_service(sip_msg_t *msg, str *vsuffix, str *vservice)
+{
+	return i_enum_query_helper(msg, vsuffix, vservice);
+}
+
 /******************* FQUERY *******************/
 
 /*
@@ -1167,6 +1237,14 @@ int enum_pv_query_1(sip_msg_t *_msg, char *_sp, char *_p2)
 	return enum_pv_query_helper(_msg, &ve164, &suffix, &service);
 }
 
+/**
+ *
+ */
+int ki_enum_pv_query(sip_msg_t *msg, str *ve164)
+{
+	return enum_pv_query_helper(msg, ve164, &suffix, &service);
+}
+
 /*
  * Call enum_pv_query_3 with pv and suffix args and default service.
  */
@@ -1187,6 +1265,14 @@ int enum_pv_query_2(sip_msg_t *_msg, char *_sp, char *_suffix)
 	return enum_pv_query_helper(_msg, &ve164, &vsuffix, &service);
 }
 
+/**
+ *
+ */
+int ki_enum_pv_query_suffix(sip_msg_t *msg, str *ve164, str *vsuffix)
+{
+	return enum_pv_query_helper(msg, ve164, vsuffix, &service);
+}
+
 /*
  * See documentation in README file.
  */
@@ -1211,4 +1297,13 @@ int enum_pv_query_3(sip_msg_t *_msg, char *_sp, char *_suffix, char *_service)
 	}
 
 	return enum_pv_query_helper(_msg, &ve164, &vsuffix, &vservice);
+}
+
+/**
+ *
+ */
+int ki_enum_pv_query_suffix_service(sip_msg_t *msg, str *ve164, str *vsuffix,
+		str *vservice)
+{
+	return enum_pv_query_helper(msg, ve164, vsuffix, vservice);
 }

+ 17 - 0
src/modules/enum/enum.h

@@ -73,5 +73,22 @@ int i_enum_query_0(struct sip_msg *_msg, char *_str1, char *_str2);
 int i_enum_query_1(struct sip_msg *_msg, char *_suffix, char *_str2);
 int i_enum_query_2(struct sip_msg *_msg, char *_suffix, char *_service);
 
+/*
+ * Exports to Kemi framework.
+ */
+int ki_is_from_user_enum(sip_msg_t *msg);
+int ki_is_from_user_enum_suffix(sip_msg_t *msg, str *vsuffix);
+int ki_is_from_user_enum_suffix_service(sip_msg_t *msg, str *vsuffix,
+		str *vservice);
+int ki_enum_query(sip_msg_t *msg);
+int ki_enum_query_suffix(sip_msg_t *msg, str *vsuffix);
+int ki_enum_query_suffix_service(sip_msg_t *msg, str *vsuffix, str *vservice);
+int ki_i_enum_query(sip_msg_t *msg);
+int ki_i_enum_query_suffix(sip_msg_t *msg, str *vsuffix);
+int ki_i_enum_query_suffix_service(sip_msg_t *msg, str *vsuffix, str *vservice);
+int ki_enum_pv_query(sip_msg_t *msg, str *ve164);
+int ki_enum_pv_query_suffix(sip_msg_t *msg, str *ve164, str *vsuffix);
+int ki_enum_pv_query_suffix_service(sip_msg_t *msg, str *ve164, str *vsuffix,
+		str *vservice);
 
 #endif /* ENUM_H */

+ 81 - 1
src/modules/enum/enum_mod.c

@@ -35,6 +35,7 @@
 #include "../../core/sr_module.h"
 #include "../../core/error.h"
 #include "../../core/mod_fix.h"
+#include "../../core/kemi.h"
 #include "enum.h"
 
 MODULE_VERSION
@@ -114,4 +115,83 @@ struct module_exports exports = {
 	0,        /* destroy function */
 	0         /* per-child init function */
 };
-/* clang-format on */
+/* clang-format on */
+
+/**
+ *
+ */
+/* clang-format off */
+static sr_kemi_t sr_kemi_enum_exports[] = {
+	{ str_init("enum"), str_init("enum_query"),
+		SR_KEMIP_INT, ki_enum_query,
+		{ SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE,
+			SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE }
+	},
+	{ str_init("enum"), str_init("enum_query_suffix"),
+		SR_KEMIP_INT, ki_enum_query_suffix,
+		{ SR_KEMIP_STR, SR_KEMIP_NONE, SR_KEMIP_NONE,
+			SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE }
+	},
+	{ str_init("enum"), str_init("enum_query_suffix_service"),
+		SR_KEMIP_INT, ki_enum_query_suffix_service,
+		{ SR_KEMIP_STR, SR_KEMIP_STR, SR_KEMIP_NONE,
+			SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE }
+	},
+	{ str_init("enum"), str_init("enum_pv_query"),
+		SR_KEMIP_INT, ki_enum_pv_query,
+		{ SR_KEMIP_STR, SR_KEMIP_NONE, SR_KEMIP_NONE,
+			SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE }
+	},
+	{ str_init("enum"), str_init("enum_pv_query_suffix"),
+		SR_KEMIP_INT, ki_enum_pv_query_suffix,
+		{ SR_KEMIP_STR, SR_KEMIP_STR, SR_KEMIP_NONE,
+			SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE }
+	},
+	{ str_init("enum"), str_init("enum_pv_query_suffix_service"),
+		SR_KEMIP_INT, ki_enum_pv_query_suffix_service,
+		{ SR_KEMIP_STR, SR_KEMIP_STR, SR_KEMIP_STR,
+			SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE }
+	},
+	{ str_init("enum"), str_init("is_from_user_enum"),
+		SR_KEMIP_INT, ki_is_from_user_enum,
+		{ SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE,
+			SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE }
+	},
+	{ str_init("enum"), str_init("is_from_user_enum_suffix"),
+		SR_KEMIP_INT, ki_is_from_user_enum_suffix,
+		{ SR_KEMIP_STR, SR_KEMIP_NONE, SR_KEMIP_NONE,
+			SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE }
+	},
+	{ str_init("enum"), str_init("is_from_user_enum_suffix_service"),
+		SR_KEMIP_INT, ki_is_from_user_enum_suffix_service,
+		{ SR_KEMIP_STR, SR_KEMIP_STR, SR_KEMIP_NONE,
+			SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE }
+	},
+	{ str_init("enum"), str_init("i_enum_query"),
+		SR_KEMIP_INT, ki_i_enum_query,
+		{ SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE,
+			SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE }
+	},
+	{ str_init("enum"), str_init("enum_i_query_suffix"),
+		SR_KEMIP_INT, ki_i_enum_query_suffix,
+		{ SR_KEMIP_STR, SR_KEMIP_NONE, SR_KEMIP_NONE,
+			SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE }
+	},
+	{ str_init("enum"), str_init("i_enum_query_suffix_service"),
+		SR_KEMIP_INT, ki_i_enum_query_suffix_service,
+		{ SR_KEMIP_STR, SR_KEMIP_STR, SR_KEMIP_NONE,
+			SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE }
+	},
+
+	{ {0, 0}, {0, 0}, 0, NULL, { 0, 0, 0, 0, 0, 0 } }
+};
+/* clang-format on */
+
+/**
+ *
+ */
+int mod_register(char *path, int *dlflags, void *p1, void *p2)
+{
+	sr_kemi_modules_add(sr_kemi_enum_exports);
+	return 0;
+}