aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libndpi.sym1
-rw-r--r--src/include/ndpi_api.h15
-rw-r--r--src/lib/ndpi_main.c16
3 files changed, 30 insertions, 2 deletions
diff --git a/libndpi.sym b/libndpi.sym
index c821189e8..6508f5d91 100644
--- a/libndpi.sym
+++ b/libndpi.sym
@@ -22,6 +22,7 @@ ndpi_init_detection_module
ndpi_get_num_supported_protocols
ndpi_set_proto_defaults
ndpi_get_protocol_id
+ndpi_get_category_id
ndpi_find_port_based_protocol
ndpi_get_http_method
ndpi_get_http_url
diff --git a/src/include/ndpi_api.h b/src/include/ndpi_api.h
index 2062974ad..9fbabc5f7 100644
--- a/src/include/ndpi_api.h
+++ b/src/include/ndpi_api.h
@@ -533,14 +533,25 @@ extern "C" {
* Return the ID of the protocol
*
* @par ndpi_mod = the detection module
- * @par proto = the ID of the protocol
- * @return the string name of the breed ID
+ * @par proto = the protocol name
+ * @return the ID of the protocol
*
*/
int ndpi_get_protocol_id(struct ndpi_detection_module_struct *ndpi_mod, char *proto);
/**
+ * Return the ID of the category
+ *
+ * @par ndpi_mod = the detection module
+ * @par proto = the category name
+ * @return the ID of the category
+ *
+ */
+ int ndpi_get_category_id(struct ndpi_detection_module_struct *ndpi_mod, char *cat);
+
+
+ /**
* Write the list of the supported protocols
*
* @par ndpi_mod = the detection module
diff --git a/src/lib/ndpi_main.c b/src/lib/ndpi_main.c
index 3405779e7..0288c3e9f 100644
--- a/src/lib/ndpi_main.c
+++ b/src/lib/ndpi_main.c
@@ -4676,6 +4676,7 @@ void ndpi_category_set_name(struct ndpi_detection_module_struct *ndpi_mod,
/* ****************************************************** */
+/* Keep it in order and in sync with ndpi_protocol_category_t in ndpi_typedefs.h */
static const char* categories[] = {
"Unspecified",
"Media",
@@ -4807,6 +4808,21 @@ int ndpi_get_protocol_id(struct ndpi_detection_module_struct *ndpi_mod, char *pr
/* ****************************************************** */
+int ndpi_get_category_id(struct ndpi_detection_module_struct *ndpi_mod, char *cat) {
+ int i;
+ const char *name;
+
+ for(i = 0; i < NDPI_PROTOCOL_NUM_CATEGORIES; i++) {
+ name = ndpi_category_get_name(ndpi_mod, i);
+ if(strcasecmp(cat, name) == 0)
+ return(i);
+ }
+
+ return(-1);
+}
+
+/* ****************************************************** */
+
void ndpi_dump_protocols(struct ndpi_detection_module_struct *ndpi_mod) {
int i;
for(i=0; i<(int)ndpi_mod->ndpi_num_supported_protocols; i++)