aboutsummaryrefslogtreecommitdiff
path: root/src/include
diff options
context:
space:
mode:
authorHidde van der Heide <hvanderheide@nexuz.net>2017-12-20 13:19:24 +0100
committerHidde van der Heide <hvanderheide@nexuz.net>2017-12-20 13:19:24 +0100
commitbf8c9c2625928e069266b96cf92a4b493a58ff4b (patch)
treef548317cbdc98bec3390d78bf5383aecbffeac14 /src/include
parentee957e083153b3bd42231836ddb29e6bbf843aa0 (diff)
parentf024e72effe55fc0f78f8682814240f4ee1e4dc0 (diff)
Merge remote-tracking branch 'upstream/dev' into dev
Diffstat (limited to 'src/include')
-rw-r--r--src/include/ndpi_api.h29
-rw-r--r--src/include/ndpi_define.h.in69
-rw-r--r--src/include/ndpi_protocol_ids.h9
-rw-r--r--src/include/ndpi_protocols.h2
-rw-r--r--src/include/ndpi_typedefs.h36
-rw-r--r--src/include/ndpi_win32.h10
6 files changed, 115 insertions, 40 deletions
diff --git a/src/include/ndpi_api.h b/src/include/ndpi_api.h
index 4193a2c57..9fbabc5f7 100644
--- a/src/include/ndpi_api.h
+++ b/src/include/ndpi_api.h
@@ -384,6 +384,20 @@ extern "C" {
/**
+ * Exclude protocol from search
+ *
+ * @par ndpi_struct = the detection module
+ * @par flow = the flow where match the host
+ * @par master_protocol_id = value of the ID associated to the master protocol detected
+ *
+ */
+ void ndpi_exclude_protocol(struct ndpi_detection_module_struct *ndpi_struct,
+ struct ndpi_flow_struct *flow,
+ u_int16_t master_protocol_id,
+ const char *_file, const char *_func,int _line);
+
+
+ /**
* Check if the string -bigram_to_match- match with a bigram of -automa-
*
* @par ndpi_mod = the detection module
@@ -519,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/include/ndpi_define.h.in b/src/include/ndpi_define.h.in
index 33c3c622e..c6c1f4481 100644
--- a/src/include/ndpi_define.h.in
+++ b/src/include/ndpi_define.h.in
@@ -180,24 +180,67 @@
#define NDPI_SOULSEEK_CONNECTION_IP_TICK_TIMEOUT 600
#ifdef NDPI_ENABLE_DEBUG_MESSAGES
-#define NDPI_LOG(proto, m, log_level, args...) \
+ #define NDPI_LOG(proto, m, log_level, args...) \
{ \
struct ndpi_detection_module_struct *mod = (struct ndpi_detection_module_struct*) m; \
- if(mod != NULL) { \
- mod->ndpi_debug_print_file=__FILE__; \
- mod->ndpi_debug_print_function=__FUNCTION__; \
- mod->ndpi_debug_print_line=__LINE__; \
- (*(mod->ndpi_debug_printf))(proto, mod, log_level, args); \
- } \
+ if(mod != NULL && mod->ndpi_debug_printf != NULL) \
+ (*(mod->ndpi_debug_printf))(proto, mod, log_level, __FILE__, __FUNCTION__, __LINE__, args); \
}
-#else /* NDPI_ENABLE_DEBUG_MESSAGES */
-#ifdef WIN32
-#define NDPI_LOG(...) {}
-#else
-#define NDPI_LOG(proto, mod, log_level, args...) {}
-#endif
+
+ /* We must define NDPI_CURRENT_PROTO before include ndpi_main.h !!!
+ *
+ * #include "ndpi_protocol_ids.h"
+ * #define NDPI_CURRENT_PROTO NDPI_PROTOCOL_XXXX
+ * #include "ndpi_api.h"
+ *
+ */
+
+ #ifndef NDPI_CURRENT_PROTO
+ #define NDPI_CURRENT_PROTO NDPI_PROTO_UNKNOWN
+ #endif
+
+ #define NDPI_LOG_ERR(mod, args...) \
+ if(mod && mod->ndpi_log_level >= NDPI_LOG_ERROR) { \
+ if(mod != NULL && mod->ndpi_debug_printf != NULL) \
+ (*(mod->ndpi_debug_printf))(NDPI_CURRENT_PROTO, mod, NDPI_LOG_ERROR , __FILE__, __FUNCTION__, __LINE__, args); \
+ }
+
+ #define NDPI_LOG_INFO(mod, args...) \
+ if(mod && mod->ndpi_log_level >= NDPI_LOG_TRACE) { \
+ if(mod != NULL && mod->ndpi_debug_printf != NULL) \
+ (*(mod->ndpi_debug_printf))(NDPI_CURRENT_PROTO, mod, NDPI_LOG_TRACE , __FILE__, __FUNCTION__, __LINE__, args); \
+ }
+
+ #define NDPI_LOG_DBG(mod, args...) \
+ if(mod && mod->ndpi_log_level >= NDPI_LOG_DEBUG) { \
+ if(mod != NULL && mod->ndpi_debug_printf != NULL) \
+ (*(mod->ndpi_debug_printf))(NDPI_CURRENT_PROTO, mod, NDPI_LOG_DEBUG , __FILE__, __FUNCTION__, __LINE__, args); \
+ }
+
+ #define NDPI_LOG_DBG2(mod, args...) \
+ if(mod && mod->ndpi_log_level >= NDPI_LOG_DEBUG_EXTRA) { \
+ if(mod != NULL && mod->ndpi_debug_printf != NULL) \
+ (*(mod->ndpi_debug_printf))(NDPI_CURRENT_PROTO, mod, NDPI_LOG_DEBUG_EXTRA , __FILE__, __FUNCTION__, __LINE__, args); \
+ }
+
+#else /* not defined NDPI_ENABLE_DEBUG_MESSAGES */
+# ifdef WIN32
+# define NDPI_LOG(...) {}
+# define NDPI_LOG_ERR(...) {}
+# define NDPI_LOG_INFO(...) {}
+# define NDPI_LOG_DBG(...) {}
+# define NDPI_LOG_DBG2(...) {}
+# else
+# define NDPI_LOG(proto, mod, log_level, args...) {}
+# define NDPI_LOG_ERR(mod, args...) {}
+# define NDPI_LOG_INFO(mod, args...) {}
+# define NDPI_LOG_DBG(mod, args...) {}
+# define NDPI_LOG_DBG2(mod, args...) {}
+# endif
#endif /* NDPI_ENABLE_DEBUG_MESSAGES */
+#define NDPI_EXCLUDE_PROTO(mod,flow) ndpi_exclude_protocol(mod, flow, NDPI_CURRENT_PROTO, __FILE__, __FUNCTION__, __LINE__)
+
/**
* macro for getting the string len of a static string
*
diff --git a/src/include/ndpi_protocol_ids.h b/src/include/ndpi_protocol_ids.h
index bd0c8e999..aaa25a396 100644
--- a/src/include/ndpi_protocol_ids.h
+++ b/src/include/ndpi_protocol_ids.h
@@ -1,3 +1,4 @@
+
/*
* ndpi_protocol_ids.h
*
@@ -108,7 +109,7 @@
#define NDPI_PROTOCOL_OSCAR 69
#define NDPI_PROTOCOL_YAHOO 70
#define NDPI_PROTOCOL_BATTLEFIELD 71
-#define NDPI_PROTOCOL_QUAKE 72
+#define NDPI_PROTOCOL_GOOGLE_PLUS 72
#define NDPI_PROTOCOL_IP_VRRP 73
#define NDPI_PROTOCOL_STEAM 74 /* Tomasz Bujlow <tomasz@skatnet.dk> */
#define NDPI_PROTOCOL_HALFLIFE2 75
@@ -172,9 +173,9 @@
#define NDPI_PROTOCOL_NETFLIX 133
#define NDPI_PROTOCOL_LASTFM 134
#define NDPI_PROTOCOL_WAZE 135
-#define NDPI_PROTOCOL_SKYFILE_PREPAID 136 /* free for future use */
-#define NDPI_PROTOCOL_SKYFILE_RUDICS 137 /* free for future use */
-#define NDPI_PROTOCOL_SKYFILE_POSTPAID 138 /* free for future use */
+#define NDPI_PROTOCOL_YOUTUBE_UPLOAD 136 /* Upload files to youtube */
+#define NDPI_PROTOCOL_ICQ 137
+#define NDPI_PROTOCOL_CHECKMK 138
#define NDPI_PROTOCOL_CITRIX_ONLINE 139
#define NDPI_PROTOCOL_APPLE 140
#define NDPI_PROTOCOL_WEBEX 141
diff --git a/src/include/ndpi_protocols.h b/src/include/ndpi_protocols.h
index ef248027a..da7acaef7 100644
--- a/src/include/ndpi_protocols.h
+++ b/src/include/ndpi_protocols.h
@@ -140,6 +140,7 @@ void ndpi_search_pptp(struct ndpi_detection_module_struct *ndpi_struct, struct n
void ndpi_search_stealthnet(struct ndpi_detection_module_struct *ndpi_struct, struct ndpi_flow_struct *flow);
void ndpi_search_dhcpv6_udp(struct ndpi_detection_module_struct *ndpi_struct, struct ndpi_flow_struct *flow);
void ndpi_search_afp(struct ndpi_detection_module_struct *ndpi_struct, struct ndpi_flow_struct *flow);
+void ndpi_search_checkmk(struct ndpi_detection_module_struct *ndpi_struct, struct ndpi_flow_struct *flow);
void ndpi_search_aimini(struct ndpi_detection_module_struct *ndpi_struct, struct ndpi_flow_struct *flow);
void ndpi_search_florensia(struct ndpi_detection_module_struct *ndpi_struct, struct ndpi_flow_struct *flow);
void ndpi_search_maplestory(struct ndpi_detection_module_struct *ndpi_struct, struct ndpi_flow_struct *flow);
@@ -348,5 +349,6 @@ void init_tinc_dissector(struct ndpi_detection_module_struct *ndpi_struct, u_int
void init_fix_dissector(struct ndpi_detection_module_struct *ndpi_struct, u_int32_t *id, NDPI_PROTOCOL_BITMASK *detection_bitmask);
void init_nintendo_dissector(struct ndpi_detection_module_struct *ndpi_struct, u_int32_t *id, NDPI_PROTOCOL_BITMASK *detection_bitmask);
void init_csgo_dissector(struct ndpi_detection_module_struct *ndpi_struct, u_int32_t *id, NDPI_PROTOCOL_BITMASK *detection_bitmask);
+void init_checkmk_dissector(struct ndpi_detection_module_struct *ndpi_struct, u_int32_t *id, NDPI_PROTOCOL_BITMASK *detection_bitmask);
#endif /* __NDPI_PROTOCOLS_H__ */
diff --git a/src/include/ndpi_typedefs.h b/src/include/ndpi_typedefs.h
index 5383dcf6b..b28ae23f4 100644
--- a/src/include/ndpi_typedefs.h
+++ b/src/include/ndpi_typedefs.h
@@ -36,7 +36,8 @@ typedef enum
{
NDPI_LOG_ERROR,
NDPI_LOG_TRACE,
- NDPI_LOG_DEBUG
+ NDPI_LOG_DEBUG,
+ NDPI_LOG_DEBUG_EXTRA
} ndpi_log_level_t;
/* NDPI_VISIT */
@@ -205,34 +206,27 @@ struct ndpi_iphdr {
/* +++++++++++++++++++++++ IPv6 header +++++++++++++++++++++++ */
/* rfc3542 */
-struct ndpi_in6_addr
-{
- union
- {
+struct ndpi_in6_addr {
+ union {
u_int8_t u6_addr8[16];
u_int16_t u6_addr16[8];
u_int32_t u6_addr32[4];
} u6_addr; /* 128-bit IP6 address */
};
-PACK_ON
-struct ndpi_ipv6hdr
-{
- union
- {
- struct ndpi_ip6_hdrctl
- {
- u_int32_t ip6_un1_flow;
- u_int16_t ip6_un1_plen;
- u_int8_t ip6_un1_nxt;
- u_int8_t ip6_un1_hlim;
- } ip6_un1;
- u_int8_t ip6_un2_vfc;
- } ip6_ctlun;
+struct ndpi_ip6_hdrctl {
+ u_int32_t ip6_un1_flow;
+ u_int16_t ip6_un1_plen;
+ u_int8_t ip6_un1_nxt;
+ u_int8_t ip6_un1_hlim;
+};
+/* PACK_ON */
+struct ndpi_ipv6hdr {
+ struct ndpi_ip6_hdrctl ip6_hdr;
struct ndpi_in6_addr ip6_src;
struct ndpi_in6_addr ip6_dst;
-} PACK_OFF;
+} /* PACK_OFF */;
/* +++++++++++++++++++++++ TCP header +++++++++++++++++++++++ */
@@ -859,12 +853,14 @@ struct ndpi_detection_module_struct {
ndpi_default_ports_tree_node_t *tcpRoot, *udpRoot;
+ ndpi_log_level_t ndpi_log_level; /* default error */
#ifdef NDPI_ENABLE_DEBUG_MESSAGES
/* debug callback, only set when debug is used */
ndpi_debug_function_ptr ndpi_debug_printf;
const char *ndpi_debug_print_file;
const char *ndpi_debug_print_function;
u_int32_t ndpi_debug_print_line;
+ NDPI_PROTOCOL_BITMASK debug_bitmask;
#endif
/* misc parameters */
diff --git a/src/include/ndpi_win32.h b/src/include/ndpi_win32.h
index 8a952b293..db309faff 100644
--- a/src/include/ndpi_win32.h
+++ b/src/include/ndpi_win32.h
@@ -24,7 +24,15 @@
#ifndef __NDPI_WIN32_H__
#define __NDPI_WIN32_H__
+// fix a MinGW build issue "error: multiple storage classes in declaration specifiers" due to MinGW
+// defining extern for __forceinline types
+#if (defined(__MINGW32__) || defined(__MINGW64__)) && defined(__GNUC__)
+#define MINGW_GCC
+#define __mingw_forceinline __inline__ __attribute__((__always_inline__,__gnu_inline__))
+#endif
+
#include <winsock2.h>
+#include <windows.h>
#include <ws2tcpip.h>
#include <process.h>
#include <io.h>
@@ -40,7 +48,7 @@
#define IPVERSION 4 /* on *nix it is defined in netinet/ip.h */
-extern char* strsep(char **sp, const char *sep);
+extern char* strsep(char **sp, char *sep);
typedef unsigned char u_char;
typedef unsigned short u_short;