diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/include/ndpi_win32.h | 21 | ||||
-rw-r--r-- | src/lib/Makefile.in | 6 | ||||
-rw-r--r-- | src/lib/ndpi_classify.c | 1 | ||||
-rw-r--r-- | src/lib/ndpi_main.c | 8 | ||||
-rw-r--r-- | src/lib/ndpi_serializer.c | 25 | ||||
-rw-r--r-- | src/lib/ndpi_utils.c | 5 | ||||
-rw-r--r-- | src/lib/protocols/nats.c | 2 |
7 files changed, 53 insertions, 15 deletions
diff --git a/src/include/ndpi_win32.h b/src/include/ndpi_win32.h index a39a2401a..c3403c009 100644 --- a/src/include/ndpi_win32.h +++ b/src/include/ndpi_win32.h @@ -31,6 +31,8 @@ #define __mingw_forceinline __inline__ __attribute__((__always_inline__,__gnu_inline__)) #endif +#undef _WIN32_WINNT +#define _WIN32_WINNT _WIN32_WINNT_WIN8 #include <winsock2.h> #include <windows.h> #include <ws2tcpip.h> @@ -39,6 +41,7 @@ #include <getopt.h> /* getopt from: http://www.pwilson.net/sample.html. */ #include <process.h> /* for getpid() and the exec..() family */ #include <stdint.h> +#include <time.h> #ifndef _CRT_SECURE_NO_WARNINGS #define _CRT_SECURE_NO_WARNINGS @@ -48,6 +51,17 @@ #define IPVERSION 4 /* on *nix it is defined in netinet/ip.h */ +#ifndef MIN +#define MIN(X, Y) (((X) < (Y)) ? (X) : (Y)) +#endif + +#ifndef IPPROTO_SCTP +#define IPPROTO_SCTP 132 +#endif + +#undef gettimeofday +#define gettimeofday mingw_gettimeofday + extern char* strsep(char **sp, char *sep); typedef unsigned char u_char; @@ -79,4 +93,11 @@ extern unsigned long waitForNextEvent(unsigned long ulDelay /* ms */); #define strtok_r strtok_s #define timegm _mkgmtime +static inline struct tm * localtime_r(const time_t *timep, struct tm * result) +{ + struct tm *timeinfo; + timeinfo = localtime(timep); + return timeinfo; +} + #endif /* __NDPI_WIN32_H__ */ diff --git a/src/lib/Makefile.in b/src/lib/Makefile.in index 09e1a7d09..902941d26 100644 --- a/src/lib/Makefile.in +++ b/src/lib/Makefile.in @@ -29,13 +29,19 @@ NDPI_LIBS = $(NDPI_LIB_STATIC) $(NDPI_LIB_SHARED) ifneq ($(OS),Windows_NT) OS := $(shell uname) endif +BUILD_MINGW = @BUILD_MINGW@ ifeq ($(OS),Darwin) CC=clang SONAME_FLAG= else +ifneq ($(BUILD_MINGW),) +NDPI_LIB_SHARED_BASE = libndpi +NDPI_LIB_SHARED = $(NDPI_LIB_SHARED_BASE)-@NDPI_VERSION_SHORT@.dll +else SONAME_FLAG=-Wl,-soname,$(NDPI_LIB_SHARED_BASE).$(NDPI_VERSION_MAJOR) endif +endif all: $(NDPI_LIBS) diff --git a/src/lib/ndpi_classify.c b/src/lib/ndpi_classify.c index 7b410e05f..a7a02cb4e 100644 --- a/src/lib/ndpi_classify.c +++ b/src/lib/ndpi_classify.c @@ -51,6 +51,7 @@ #include <math.h> #include "ndpi_main.h" #include "ndpi_classify.h" +#include "ndpi_includes.h" /** finds the minimum value between to inputs */ #ifndef min diff --git a/src/lib/ndpi_main.c b/src/lib/ndpi_main.c index ba497652e..06eff97a5 100644 --- a/src/lib/ndpi_main.c +++ b/src/lib/ndpi_main.c @@ -5034,7 +5034,7 @@ void ndpi_parse_packet_line_info(struct ndpi_detection_module_struct *ndpi_str, } packet->line[packet->parsed_lines].len = - (u_int16_t)(((unsigned long) &packet->payload[a]) - ((unsigned long) packet->line[packet->parsed_lines].ptr)); + (u_int16_t)(((size_t) &packet->payload[a]) - ((size_t) packet->line[packet->parsed_lines].ptr)); /* First line of a HTTP response parsing. Expected a "HTTP/1.? ???" */ if(packet->parsed_lines == 0 && packet->line[0].len >= NDPI_STATICSTRING_LEN("HTTP/1.X 200 ") && @@ -5256,8 +5256,8 @@ void ndpi_parse_packet_line_info(struct ndpi_detection_module_struct *ndpi_str, if(packet->parsed_lines >= 1) { packet->line[packet->parsed_lines].len = - (u_int16_t)(((unsigned long) &packet->payload[packet->payload_packet_len]) - - ((unsigned long) packet->line[packet->parsed_lines].ptr)); + (u_int16_t)(((size_t) &packet->payload[packet->payload_packet_len]) - + ((size_t) packet->line[packet->parsed_lines].ptr)); packet->parsed_lines++; } } @@ -5284,7 +5284,7 @@ void ndpi_parse_packet_line_info_any(struct ndpi_detection_module_struct *ndpi_s for (a = 0; a < end; a++) { if(packet->payload[a] == 0x0a) { packet->line[packet->parsed_lines].len = (u_int16_t)( - ((unsigned long) &packet->payload[a]) - ((unsigned long) packet->line[packet->parsed_lines].ptr)); + ((size_t) &packet->payload[a]) - ((size_t) packet->line[packet->parsed_lines].ptr)); if(a > 0 && packet->payload[a - 1] == 0x0d) packet->line[packet->parsed_lines].len--; diff --git a/src/lib/ndpi_serializer.c b/src/lib/ndpi_serializer.c index a5f14fbe4..84e0697ce 100644 --- a/src/lib/ndpi_serializer.c +++ b/src/lib/ndpi_serializer.c @@ -24,6 +24,7 @@ #include <stdlib.h> #include <errno.h> +#include <inttypes.h> #include <sys/types.h> #include "ndpi_api.h" @@ -38,6 +39,14 @@ #include <sys/endian.h> #endif +#ifdef WIN32 +#define NDPI_I64_FORMAT "%" PRId64 +#define NDPI_U64_FORMAT "%" PRIu64 +#else +#define NDPI_I64_FORMAT "%lld" +#define NDPI_U64_FORMAT "%llu" +#endif + /* ********************************** */ u_int64_t ndpi_htonll(u_int64_t v) { @@ -829,7 +838,7 @@ int ndpi_serialize_uint32_uint64(ndpi_serializer *_serializer, serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, - "%llu", (unsigned long long)value); + NDPI_U64_FORMAT, (unsigned long long)value); ndpi_serialize_json_post(_serializer); } else if(serializer->fmt == ndpi_serialization_format_csv) { @@ -838,7 +847,7 @@ int ndpi_serialize_uint32_uint64(ndpi_serializer *_serializer, buff_diff = serializer->buffer.size - serializer->status.buffer.size_used; serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, - "%llu", (unsigned long long)value); + NDPI_U64_FORMAT, (unsigned long long)value); } else { if(value <= 0xffffffff) { return(ndpi_serialize_uint32_uint32(_serializer, key, value)); @@ -961,7 +970,7 @@ int ndpi_serialize_uint32_int64(ndpi_serializer *_serializer, serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], - buff_diff, "%lld", (long long int)value); + buff_diff, NDPI_I64_FORMAT, (long long int)value); ndpi_serialize_json_post(_serializer); } else if(serializer->fmt == ndpi_serialization_format_csv) { @@ -970,7 +979,7 @@ int ndpi_serialize_uint32_int64(ndpi_serializer *_serializer, buff_diff = serializer->buffer.size - serializer->status.buffer.size_used; serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, - "%lld", (long long int)value); + NDPI_I64_FORMAT, (long long int)value); } else { if((value & 0xFFFFFFFF) == value) { @@ -1282,7 +1291,7 @@ int ndpi_serialize_binary_int64(ndpi_serializer *_serializer, serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, - "%lld", (long long int)value); + NDPI_I64_FORMAT, (long long int)value); ndpi_serialize_json_post(_serializer); } else if(serializer->fmt == ndpi_serialization_format_csv) { @@ -1290,7 +1299,7 @@ int ndpi_serialize_binary_int64(ndpi_serializer *_serializer, ndpi_serialize_csv_pre(serializer); buff_diff = serializer->buffer.size - serializer->status.buffer.size_used; serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, - "%lld", (long long int)value); + NDPI_I64_FORMAT, (long long int)value); } else { if ((value & 0xFFFFFFFF) == value) { return(ndpi_serialize_string_int32(_serializer, key, value)); @@ -1455,7 +1464,7 @@ int ndpi_serialize_binary_uint64(ndpi_serializer *_serializer, serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, - "%llu", (unsigned long long)value); + NDPI_U64_FORMAT, (unsigned long long)value); ndpi_serialize_json_post(_serializer); } else if(serializer->fmt == ndpi_serialization_format_csv) { @@ -1464,7 +1473,7 @@ int ndpi_serialize_binary_uint64(ndpi_serializer *_serializer, buff_diff = serializer->buffer.size - serializer->status.buffer.size_used; serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, - "%llu", (unsigned long long)value); + NDPI_U64_FORMAT, (unsigned long long)value); } else { if(value <= 0xffffffff) { return(ndpi_serialize_string_uint32(_serializer, key, value)); diff --git a/src/lib/ndpi_utils.c b/src/lib/ndpi_utils.c index 1a8459c34..4ec8e28ff 100644 --- a/src/lib/ndpi_utils.c +++ b/src/lib/ndpi_utils.c @@ -31,6 +31,7 @@ #include "ndpi_config.h" #include "ndpi_api.h" +#include "ndpi_includes.h" #include "ahocorasick.h" #include "libcache.h" @@ -1270,12 +1271,12 @@ int ndpi_dpi2json(struct ndpi_detection_module_struct *ndpi_struct, ndpi_serialize_string_string(serializer, "server_names", flow->protos.stun_ssl.ssl.server_names); if(before) { - strftime(notBefore, sizeof(notBefore), "%F %T", before); + strftime(notBefore, sizeof(notBefore), "%Y-%m-%d %H:%M:%S", before); ndpi_serialize_string_string(serializer, "notbefore", notBefore); } if(after) { - strftime(notAfter, sizeof(notAfter), "%F %T", after); + strftime(notAfter, sizeof(notAfter), "%Y-%m-%d %H:%M:%S", after); ndpi_serialize_string_string(serializer, "notafter", notAfter); } ndpi_serialize_string_string(serializer, "ja3", flow->protos.stun_ssl.ssl.ja3_client); diff --git a/src/lib/protocols/nats.c b/src/lib/protocols/nats.c index da99a36de..0254a02c4 100644 --- a/src/lib/protocols/nats.c +++ b/src/lib/protocols/nats.c @@ -56,7 +56,7 @@ void ndpi_search_nats_tcp(struct ndpi_detection_module_struct *ndpi_struct, if(!match) continue; if(ndpi_strnstr((const char *)match, "\r\n", - flow->packet.payload_packet_len - ((unsigned long)match - (unsigned long)flow->packet.payload)) != NULL) { + flow->packet.payload_packet_len - ((size_t)match - (size_t)flow->packet.payload)) != NULL) { NDPI_LOG_INFO(ndpi_struct, "found NATS\n"); ndpi_set_detected_protocol(ndpi_struct, flow, NDPI_PROTOCOL_NATS, NDPI_PROTOCOL_UNKNOWN); |