Win32 compilation fixes

This commit is contained in:
Luca Deri 2015-11-26 23:47:55 +01:00
parent 98ef945d2e
commit cb68d4d00a
7 changed files with 51 additions and 15 deletions

View file

@ -54,8 +54,10 @@
#endif #endif
#ifdef WIN32 #ifdef WIN32
#ifndef __LITTLE_ENDIAN__
#define __LITTLE_ENDIAN__ 1 #define __LITTLE_ENDIAN__ 1
#endif #endif
#endif
#if !(defined(__LITTLE_ENDIAN__) || defined(__BIG_ENDIAN__)) #if !(defined(__LITTLE_ENDIAN__) || defined(__BIG_ENDIAN__))
#if defined(__mips__) #if defined(__mips__)
@ -286,4 +288,8 @@
/* define memory callback function */ /* define memory callback function */
#define match_first_bytes(payload,st) (memcmp((payload),(st),(sizeof(st)-1))==0) #define match_first_bytes(payload,st) (memcmp((payload),(st),(sizeof(st)-1))==0)
#ifdef WIN32
#define snprintf(buf,len, format,...) _snprintf_s(buf, len,len, format, __VA_ARGS__)
#endif
#endif /* __NDPI_DEFINE_INCLUDE_FILE__ */ #endif /* __NDPI_DEFINE_INCLUDE_FILE__ */

View file

@ -34,12 +34,15 @@
#endif #endif
#include <ctype.h> #include <ctype.h>
#include <time.h> #include <time.h>
#ifdef WIN32
#include <winsock2.h>
#include <ws2tcpip.h>
#else
#include <arpa/inet.h> #include <arpa/inet.h>
#ifndef WIN32
#include <sys/time.h> #include <sys/time.h>
#include <sys/socket.h>
#if !defined __APPLE__ && !defined __FreeBSD__ && !defined __NetBSD__ && !defined __OpenBSD__ #if !defined __APPLE__ && !defined __FreeBSD__ && !defined __NetBSD__ && !defined __OpenBSD__
#include <endian.h> #include <endian.h>
#include <byteswap.h> #include <byteswap.h>

View file

@ -56,6 +56,18 @@ typedef struct node_t
struct node_t *left, *right; struct node_t *left, *right;
} ndpi_node; } ndpi_node;
#ifdef WIN32
typedef unsigned char u_char;
typedef unsigned short u_short;
typedef unsigned int uint;
typedef unsigned long u_long;
typedef u_char u_int8_t;
typedef u_short u_int16_t;
typedef uint u_int32_t;
typedef uint u_int;
typedef unsigned __int64 u_int64_t;
#endif
/* NDPI_MASK_SIZE */ /* NDPI_MASK_SIZE */
typedef u_int32_t ndpi_ndpi_mask; typedef u_int32_t ndpi_ndpi_mask;
@ -93,7 +105,7 @@ struct ndpi_chdlc
u_int8_t addr; /* 0x0F (Unicast) - 0x8F (Broadcast) */ u_int8_t addr; /* 0x0F (Unicast) - 0x8F (Broadcast) */
u_int8_t ctrl; /* always 0x00 */ u_int8_t ctrl; /* always 0x00 */
u_int16_t proto_code; /* protocol type (e.g. 0x0800 IP) */ u_int16_t proto_code; /* protocol type (e.g. 0x0800 IP) */
} PACK_OFF; }; PACK_OFF
/* SLARP - Serial Line ARP http://tinyurl.com/qa54e95 */ /* SLARP - Serial Line ARP http://tinyurl.com/qa54e95 */
PACK_ON PACK_ON
@ -269,6 +281,11 @@ struct ndpi_udphdr
u_int16_t check; u_int16_t check;
} PACK_OFF; } PACK_OFF;
PACK_ON
struct ndpi_dns_packet_header {
u_int16_t transaction_id, flags, num_queries, answer_rrs, authority_rrs, additional_rrs;
} PACK_OFF;
typedef union typedef union
{ {
u_int32_t ipv4; u_int32_t ipv4;

View file

@ -62,7 +62,7 @@ typedef unsigned __int64 u_int64_t;
#define pthread_rwlock_unlock pthread_mutex_unlock #define pthread_rwlock_unlock pthread_mutex_unlock
#define pthread_rwlock_destroy pthread_mutex_destroy #define pthread_rwlock_destroy pthread_mutex_destroy
#define gmtime_r(a, b) gmtime(a) /* Already thread safe on windows */ #define gmtime_r(a, b) memcpy(b, gmtime(a), sizeof(struct tm))
extern unsigned long waitForNextEvent(unsigned long ulDelay /* ms */); extern unsigned long waitForNextEvent(unsigned long ulDelay /* ms */);

View file

@ -1833,6 +1833,22 @@ u_int ndpi_get_num_supported_protocols(struct ndpi_detection_module_struct *ndpi
/* ******************************************************************** */ /* ******************************************************************** */
#ifdef WIN32
char * strsep(char **sp, char *sep)
{
char *p, *s;
if (sp == NULL || *sp == NULL || **sp == '\0') return(NULL);
s = *sp;
p = s + strcspn(s, sep);
if (*p != '\0') *p++ = '\0';
*sp = p;
return(s);
}
#endif
/* ******************************************************************** */
int ndpi_handle_rule(struct ndpi_detection_module_struct *ndpi_mod, char* rule, u_int8_t do_add) { int ndpi_handle_rule(struct ndpi_detection_module_struct *ndpi_mod, char* rule, u_int8_t do_add) {
char *at, *proto, *elem; char *at, *proto, *elem;
ndpi_proto_defaults_t *def; ndpi_proto_defaults_t *def;

View file

@ -85,10 +85,6 @@ static u_int16_t get16(int *i, const u_int8_t *payload) {
/* *********************************************** */ /* *********************************************** */
struct dns_packet_header {
u_int16_t transaction_id, flags, num_queries, answer_rrs, authority_rrs, additional_rrs;
} __attribute__((packed));
void ndpi_search_dns(struct ndpi_detection_module_struct *ndpi_struct, struct ndpi_flow_struct *flow) void ndpi_search_dns(struct ndpi_detection_module_struct *ndpi_struct, struct ndpi_flow_struct *flow)
{ {
struct ndpi_packet_struct *packet = &flow->packet; struct ndpi_packet_struct *packet = &flow->packet;
@ -107,9 +103,9 @@ void ndpi_search_dns(struct ndpi_detection_module_struct *ndpi_struct, struct nd
} }
if(((dport == 53) || (sport == 53) || (dport == 5355)) if(((dport == 53) || (sport == 53) || (dport == 5355))
&& (packet->payload_packet_len > sizeof(struct dns_packet_header))) { && (packet->payload_packet_len > sizeof(struct ndpi_dns_packet_header))) {
int i = packet->tcp ? 2 : 0; int i = packet->tcp ? 2 : 0;
struct dns_packet_header header, *dns = (struct dns_packet_header*)&packet->payload[i]; struct ndpi_dns_packet_header header, *dns = (struct ndpi_dns_packet_header*)&packet->payload[i];
u_int8_t is_query, ret_code, is_dns = 0; u_int8_t is_query, ret_code, is_dns = 0;
u_int32_t a_record[NDPI_MAX_DNS_REQUESTS] = { 0 }, query_offset, num_a_records = 0; u_int32_t a_record[NDPI_MAX_DNS_REQUESTS] = { 0 }, query_offset, num_a_records = 0;
@ -121,7 +117,7 @@ void ndpi_search_dns(struct ndpi_detection_module_struct *ndpi_struct, struct nd
header.additional_rrs = ntohs(dns->additional_rrs); header.additional_rrs = ntohs(dns->additional_rrs);
is_query = (header.flags & 0x8000) ? 0 : 1; is_query = (header.flags & 0x8000) ? 0 : 1;
ret_code = is_query ? 0 : (header.flags & 0x0F); ret_code = is_query ? 0 : (header.flags & 0x0F);
i += sizeof(struct dns_packet_header); i += sizeof(struct ndpi_dns_packet_header);
query_offset = i; query_offset = i;
if(is_query) { if(is_query) {

View file

@ -30,8 +30,6 @@
#ifdef NDPI_SERVICE_KAKAOTALK_VOICE #ifdef NDPI_SERVICE_KAKAOTALK_VOICE
void ndpi_search_kakaotalk_voice(struct ndpi_detection_module_struct *ndpi_struct, struct ndpi_flow_struct *flow) { void ndpi_search_kakaotalk_voice(struct ndpi_detection_module_struct *ndpi_struct, struct ndpi_flow_struct *flow) {
struct ndpi_packet_struct *packet = &flow->packet; struct ndpi_packet_struct *packet = &flow->packet;
unsigned char *vers;
int ver_offs;
if(packet->iph if(packet->iph
&& packet->udp && packet->udp