diff options
-rw-r--r-- | example/reader_util.c | 27 | ||||
-rw-r--r-- | example/reader_util.h | 11 | ||||
-rw-r--r-- | src/include/ndpi_api.h.in | 1 | ||||
-rw-r--r-- | src/include/ndpi_define.h.in | 4 | ||||
-rw-r--r-- | src/lib/ndpi_main.c | 10 | ||||
-rw-r--r-- | src/lib/protocols/dnp3.c | 3 | ||||
-rw-r--r-- | src/lib/protocols/http.c | 6 | ||||
-rw-r--r-- | src/lib/protocols/iec60870-5-104.c | 3 | ||||
-rw-r--r-- | src/lib/protocols/mining.c | 2 | ||||
-rw-r--r-- | src/lib/protocols/modbus.c | 3 | ||||
-rw-r--r-- | src/lib/protocols/nats.c | 3 | ||||
-rw-r--r-- | src/lib/protocols/s7comm.c | 2 | ||||
-rw-r--r-- | src/lib/protocols/smb.c | 2 |
13 files changed, 46 insertions, 31 deletions
diff --git a/example/reader_util.c b/example/reader_util.c index 753c78cf1..fa90b7000 100644 --- a/example/reader_util.c +++ b/example/reader_util.c @@ -419,13 +419,13 @@ struct ndpi_workflow* ndpi_workflow_init(const struct ndpi_workflow_prefs * pref module = ndpi_init_detection_module(ndpi_no_prefs); if(module == NULL) { - NDPI_LOG(0, NULL, NDPI_LOG_ERROR, "global structure initialization failed\n"); + LOG(NDPI_LOG_ERROR, "global structure initialization failed\n"); exit(-1); } workflow = ndpi_calloc(1, sizeof(struct ndpi_workflow)); if(workflow == NULL) { - NDPI_LOG(0, NULL, NDPI_LOG_ERROR, "global structure initialization failed\n"); + LOG(NDPI_LOG_ERROR, "global structure initialization failed\n"); ndpi_free(module); exit(-1); } @@ -441,13 +441,8 @@ struct ndpi_workflow* ndpi_workflow_init(const struct ndpi_workflow_prefs * pref exit(-1); _debug_protocols_ok = 1; } - -#ifdef NDPI_ENABLE_DEBUG_MESSAGES - NDPI_BITMASK_RESET(module->debug_bitmask); - if(_debug_protocols_ok) - module->debug_bitmask = debug_bitmask; -#endif + ndpi_set_debug_bitmask(module, debug_bitmask); workflow->ndpi_flows_root = ndpi_calloc(workflow->prefs.num_roots, sizeof(void *)); @@ -811,7 +806,7 @@ static struct ndpi_flow_info *get_ndpi_flow_info(struct ndpi_workflow * workflow if(ret == NULL) { if(workflow->stats.ndpi_flow_count == workflow->prefs.max_ndpi_flows) { - NDPI_LOG(0, workflow->ndpi_struct, NDPI_LOG_ERROR, + LOG(NDPI_LOG_ERROR, "maximum flow count (%u) has been exceeded\n", workflow->prefs.max_ndpi_flows); exit(-1); @@ -819,7 +814,7 @@ static struct ndpi_flow_info *get_ndpi_flow_info(struct ndpi_workflow * workflow struct ndpi_flow_info *newflow = (struct ndpi_flow_info*)malloc(sizeof(struct ndpi_flow_info)); if(newflow == NULL) { - NDPI_LOG(0, workflow->ndpi_struct, NDPI_LOG_ERROR, "[NDPI] %s(1): not enough memory\n", __FUNCTION__); + LOG(NDPI_LOG_ERROR, "[NDPI] %s(1): not enough memory\n", __FUNCTION__); return(NULL); } else workflow->num_allocated_flows++; @@ -856,7 +851,7 @@ static struct ndpi_flow_info *get_ndpi_flow_info(struct ndpi_workflow * workflow } if((newflow->ndpi_flow = ndpi_flow_malloc(SIZEOF_FLOW_STRUCT)) == NULL) { - NDPI_LOG(0, workflow->ndpi_struct, NDPI_LOG_ERROR, "[NDPI] %s(2): not enough memory\n", __FUNCTION__); + LOG(NDPI_LOG_ERROR, "[NDPI] %s(2): not enough memory\n", __FUNCTION__); #ifdef DIRECTION_BINS ndpi_free_bin(&newflow->payload_len_bin_src2dst), ndpi_free_bin(&newflow->payload_len_bin_dst2src); #else @@ -868,7 +863,7 @@ static struct ndpi_flow_info *get_ndpi_flow_info(struct ndpi_workflow * workflow memset(newflow->ndpi_flow, 0, SIZEOF_FLOW_STRUCT); if((newflow->src_id = ndpi_malloc(SIZEOF_ID_STRUCT)) == NULL) { - NDPI_LOG(0, workflow->ndpi_struct, NDPI_LOG_ERROR, "[NDPI] %s(3): not enough memory\n", __FUNCTION__); + LOG(NDPI_LOG_ERROR, "[NDPI] %s(3): not enough memory\n", __FUNCTION__); #ifdef DIRECTION_BINS ndpi_free_bin(&newflow->payload_len_bin_src2dst), ndpi_free_bin(&newflow->payload_len_bin_dst2src); #else @@ -880,7 +875,7 @@ static struct ndpi_flow_info *get_ndpi_flow_info(struct ndpi_workflow * workflow memset(newflow->src_id, 0, SIZEOF_ID_STRUCT); if((newflow->dst_id = ndpi_malloc(SIZEOF_ID_STRUCT)) == NULL) { - NDPI_LOG(0, workflow->ndpi_struct, NDPI_LOG_ERROR, "[NDPI] %s(4): not enough memory\n", __FUNCTION__); + LOG(NDPI_LOG_ERROR, "[NDPI] %s(4): not enough memory\n", __FUNCTION__); #ifdef DIRECTION_BINS ndpi_free_bin(&newflow->payload_len_bin_src2dst), ndpi_free_bin(&newflow->payload_len_bin_dst2src); #else @@ -1754,7 +1749,7 @@ struct ndpi_proto ndpi_workflow_process_packet(struct ndpi_workflow * workflow, if(cap_warning_used == 0) { if(!workflow->prefs.quiet_mode) - NDPI_LOG(0, workflow->ndpi_struct, NDPI_LOG_DEBUG, + LOG(NDPI_LOG_DEBUG, "\n\nWARNING: packet capture size is smaller than packet size, DETECTION MIGHT NOT WORK CORRECTLY\n\n"); cap_warning_used = 1; } @@ -1777,7 +1772,7 @@ struct ndpi_proto ndpi_workflow_process_packet(struct ndpi_workflow * workflow, if(ipv4_frags_warning_used == 0) { if(!workflow->prefs.quiet_mode) - NDPI_LOG(0, workflow->ndpi_struct, NDPI_LOG_DEBUG, "\n\nWARNING: IPv4 fragments are not handled by this demo (nDPI supports them)\n"); + LOG(NDPI_LOG_DEBUG, "\n\nWARNING: IPv4 fragments are not handled by this demo (nDPI supports them)\n"); ipv4_frags_warning_used = 1; } @@ -1811,7 +1806,7 @@ struct ndpi_proto ndpi_workflow_process_packet(struct ndpi_workflow * workflow, v4_warning: if(ipv4_warning_used == 0) { if(!workflow->prefs.quiet_mode) - NDPI_LOG(0, workflow->ndpi_struct, NDPI_LOG_DEBUG, + LOG(NDPI_LOG_DEBUG, "\n\nWARNING: only IPv4/IPv6 packets are supported in this demo (nDPI supports both IPv4 and IPv6), all other packets will be discarded\n\n"); ipv4_warning_used = 1; } diff --git a/example/reader_util.h b/example/reader_util.h index 8298e2ef8..facce0114 100644 --- a/example/reader_util.h +++ b/example/reader_util.h @@ -336,4 +336,15 @@ float ndpi_flow_get_byte_count_entropy(const uint32_t byte_count[256], unsigned extern int nDPI_LogLevel; +/* TODO: conditional compilation? */ +#if 1 + #define LOG(log_level, args...) \ + { \ + if(log_level <= nDPI_LogLevel) \ + printf(args); \ + } +#else + #define LOG(...) {} +#endif + #endif diff --git a/src/include/ndpi_api.h.in b/src/include/ndpi_api.h.in index f94091cc8..248d18cee 100644 --- a/src/include/ndpi_api.h.in +++ b/src/include/ndpi_api.h.in @@ -844,6 +844,7 @@ extern "C" { u_int ndpi_get_ndpi_num_custom_protocols(struct ndpi_detection_module_struct *ndpi_mod); u_int ndpi_get_ndpi_detection_module_size(void); void ndpi_set_log_level(struct ndpi_detection_module_struct *ndpi_mod, u_int l); + void ndpi_set_debug_bitmask(struct ndpi_detection_module_struct *ndpi_mod, NDPI_PROTOCOL_BITMASK debug_bitmask); /* LRU cache */ struct ndpi_lru_cache* ndpi_lru_cache_init(u_int32_t num_entries); diff --git a/src/include/ndpi_define.h.in b/src/include/ndpi_define.h.in index be7c21175..df28c15f3 100644 --- a/src/include/ndpi_define.h.in +++ b/src/include/ndpi_define.h.in @@ -179,6 +179,8 @@ #define NDPI_JABBER_FT_TIMEOUT 5 #define NDPI_SOULSEEK_CONNECTION_IP_TICK_TIMEOUT 600 +#include "ndpi_config.h" /* To have access to NDPI_ENABLE_DEBUG_MESSAGES */ + #ifdef NDPI_ENABLE_DEBUG_MESSAGES #define NDPI_LOG(proto, m, log_level, args...) \ { \ @@ -196,7 +198,7 @@ */ #ifndef NDPI_CURRENT_PROTO - #define NDPI_CURRENT_PROTO NDPI_PROTO_UNKNOWN + #define NDPI_CURRENT_PROTO NDPI_PROTOCOL_UNKNOWN #endif #define NDPI_LOG_ERR(mod, args...) \ diff --git a/src/lib/ndpi_main.c b/src/lib/ndpi_main.c index 7799db0c1..7e7f11bf0 100644 --- a/src/lib/ndpi_main.c +++ b/src/lib/ndpi_main.c @@ -1954,7 +1954,8 @@ struct ndpi_detection_module_struct *ndpi_init_detection_module(ndpi_init_prefs if(ndpi_str == NULL) { #ifdef NDPI_ENABLE_DEBUG_MESSAGES - NDPI_LOG_ERR(ndpi_str, "ndpi_init_detection_module initial malloc failed for ndpi_str\n"); + /* We can't use NDPI_LOG* functions yet! */ + fprintf(stderr, "ndpi_init_detection_module initial malloc failed for ndpi_str\n"); #endif /* NDPI_ENABLE_DEBUG_MESSAGES */ return(NULL); } @@ -1963,6 +1964,7 @@ struct ndpi_detection_module_struct *ndpi_init_detection_module(ndpi_init_prefs #ifdef NDPI_ENABLE_DEBUG_MESSAGES set_ndpi_debug_function(ndpi_str, (ndpi_debug_function_ptr) ndpi_debug_printf); + NDPI_BITMASK_RESET(ndpi_str->debug_bitmask); #endif /* NDPI_ENABLE_DEBUG_MESSAGES */ if((ndpi_str->protocols_ptree = ndpi_New_Patricia(32 /* IPv4 */)) != NULL) @@ -6247,6 +6249,12 @@ u_int ndpi_get_ndpi_detection_module_size() { return(sizeof(struct ndpi_detection_module_struct)); } +void ndpi_set_debug_bitmask(struct ndpi_detection_module_struct *ndpi_str, NDPI_PROTOCOL_BITMASK debug_bitmask) { +#ifdef NDPI_ENABLE_DEBUG_MESSAGES + ndpi_str->debug_bitmask = debug_bitmask; +#endif +} + void ndpi_set_log_level(struct ndpi_detection_module_struct *ndpi_str, u_int l){ ndpi_str->ndpi_log_level = l; } diff --git a/src/lib/protocols/dnp3.c b/src/lib/protocols/dnp3.c index 7d0c17f70..805f8f335 100644 --- a/src/lib/protocols/dnp3.c +++ b/src/lib/protocols/dnp3.c @@ -6,9 +6,8 @@ */ #include "ndpi_protocol_ids.h" -#include "ndpi_api.h" - #define NDPI_CURRENT_PROTO NDPI_PROTOCOL_DNP3 +#include "ndpi_api.h" void ndpi_search_dnp3_tcp(struct ndpi_detection_module_struct *ndpi_struct, struct ndpi_flow_struct *flow) { diff --git a/src/lib/protocols/http.c b/src/lib/protocols/http.c index 7d54d1470..1032760d8 100644 --- a/src/lib/protocols/http.c +++ b/src/lib/protocols/http.c @@ -589,8 +589,10 @@ static u_int16_t http_request_url_offset(struct ndpi_detection_module_struct *nd int i; NDPI_LOG_DBG2(ndpi_struct, "====>>>> HTTP: %c%c%c%c [len: %u]\n", - non_ctrl(packet->payload[0]), non_ctrl(packet->payload[1]), - non_ctrl(packet->payload[2]), non_ctrl(packet->payload[3]), + packet->payload_packet_len > 0 ? packet->payload[0] : '.', + packet->payload_packet_len > 1 ? packet->payload[1] : '.', + packet->payload_packet_len > 2 ? packet->payload[2] : '.', + packet->payload_packet_len > 3 ? packet->payload[3] : '.', packet->payload_packet_len); /* Check first char */ diff --git a/src/lib/protocols/iec60870-5-104.c b/src/lib/protocols/iec60870-5-104.c index 040a1842a..e5e5325bf 100644 --- a/src/lib/protocols/iec60870-5-104.c +++ b/src/lib/protocols/iec60870-5-104.c @@ -25,9 +25,8 @@ */ #include "ndpi_protocol_ids.h" -#include "ndpi_api.h" - #define NDPI_CURRENT_PROTO NDPI_PROTOCOL_IEC60870 +#include "ndpi_api.h" void ndpi_search_iec60870_tcp(struct ndpi_detection_module_struct *ndpi_struct, struct ndpi_flow_struct *flow) { diff --git a/src/lib/protocols/mining.c b/src/lib/protocols/mining.c index 78ed9ff29..1f86987fb 100644 --- a/src/lib/protocols/mining.c +++ b/src/lib/protocols/mining.c @@ -21,7 +21,7 @@ * */ #include "ndpi_protocol_ids.h" - +#define NDPI_CURRENT_PROTO NDPI_PROTOCOL_MINING #include "ndpi_api.h" /* ************************************************************************** */ diff --git a/src/lib/protocols/modbus.c b/src/lib/protocols/modbus.c index 2a6dd2a49..c98c71298 100644 --- a/src/lib/protocols/modbus.c +++ b/src/lib/protocols/modbus.c @@ -24,9 +24,8 @@ #include "ndpi_protocol_ids.h" -#include "ndpi_api.h" - #define NDPI_CURRENT_PROTO NDPI_PROTOCOL_MODBUS +#include "ndpi_api.h" void ndpi_search_modbus_tcp(struct ndpi_detection_module_struct *ndpi_struct, struct ndpi_flow_struct *flow) { diff --git a/src/lib/protocols/nats.c b/src/lib/protocols/nats.c index 300cc838d..da99a36de 100644 --- a/src/lib/protocols/nats.c +++ b/src/lib/protocols/nats.c @@ -20,9 +20,8 @@ */ #include "ndpi_protocol_ids.h" -#include "ndpi_api.h" - #define NDPI_CURRENT_PROTO NDPI_PROTOCOL_NATS +#include "ndpi_api.h" static const char* commands[] = { diff --git a/src/lib/protocols/s7comm.c b/src/lib/protocols/s7comm.c index 7d2b92642..ec32c106e 100644 --- a/src/lib/protocols/s7comm.c +++ b/src/lib/protocols/s7comm.c @@ -21,8 +21,8 @@ *
*/
#include "ndpi_protocol_ids.h"
-#include "ndpi_api.h"
#define NDPI_CURRENT_PROTO NDPI_PROTOCOL_S7COMM
+#include "ndpi_api.h"
void ndpi_search_s7comm_tcp(struct ndpi_detection_module_struct *ndpi_struct,
struct ndpi_flow_struct *flow) {
diff --git a/src/lib/protocols/smb.c b/src/lib/protocols/smb.c index b50f59346..a70072853 100644 --- a/src/lib/protocols/smb.c +++ b/src/lib/protocols/smb.c @@ -21,7 +21,7 @@ * */ #include "ndpi_protocol_ids.h" - +#define NDPI_CURRENT_PROTO NDPI_PROTOCOL_SMBV23 #include "ndpi_api.h" |