n2n_win32.h (n2n-2.8) | : | n2n_win32.h (n2n-3.0) | ||
---|---|---|---|---|
skipping to change at line 26 | skipping to change at line 26 | |||
#if defined(__MINGW32__) | #if defined(__MINGW32__) | |||
/* should be defined here and before winsock gets included */ | /* should be defined here and before winsock gets included */ | |||
#ifndef _WIN32_WINNT | #ifndef _WIN32_WINNT | |||
#define _WIN32_WINNT 0x501 //Otherwise the linker doesnt find getaddrinfo | #define _WIN32_WINNT 0x501 //Otherwise the linker doesnt find getaddrinfo | |||
#endif /* #ifndef _WIN32_WINNT */ | #endif /* #ifndef _WIN32_WINNT */ | |||
#include <inttypes.h> | #include <inttypes.h> | |||
#endif /* #if defined(__MINGW32__) */ | #endif /* #if defined(__MINGW32__) */ | |||
#include <winsock2.h> | #include <winsock2.h> | |||
#include <windows.h> | #include <windows.h> | |||
#include <ws2def.h> | ||||
#include <ws2ipdef.h> | ||||
#if defined(_MSC_VER) | ||||
#include <Iphlpapi.h> | ||||
#pragma comment(lib,"Iphlpapi.lib") | ||||
#endif | ||||
#include <netioapi.h> | ||||
#include <winioctl.h> | #include <winioctl.h> | |||
#include <iptypes.h> | ||||
#include "wintap.h" | #include "wintap.h" | |||
#ifdef _MSC_VER | ||||
#include "getopt.h" | ||||
/* Other Win environments are expected to support stdint.h */ | ||||
/* stdint.h typedefs (C99) (not present in Visual Studio) */ | ||||
typedef unsigned int uint32_t; | ||||
typedef unsigned short uint16_t; | ||||
typedef unsigned char uint8_t; | ||||
/* sys/types.h typedefs (not present in Visual Studio) */ | ||||
typedef unsigned int u_int32_t; | ||||
typedef unsigned short u_int16_t; | ||||
typedef unsigned char u_int8_t; | ||||
typedef int ssize_t; | ||||
#endif /* #ifdef _MSC_VER */ | ||||
typedef unsigned long in_addr_t; | ||||
#undef EAFNOSUPPORT | #undef EAFNOSUPPORT | |||
#define EAFNOSUPPORT WSAEAFNOSUPPORT | #define EAFNOSUPPORT WSAEAFNOSUPPORT | |||
#define MAX(a,b) (a > b ? a : b) | #define MAX(a,b) (a > b ? a : b) | |||
#define MIN(a,b) (a < b ? a : b) | #define MIN(a,b) (a < b ? a : b) | |||
#define snprintf _snprintf | #define snprintf _snprintf | |||
#define strdup _strdup | #define strdup _strdup | |||
#define socklen_t int | #define socklen_t int | |||
#define ETH_ADDR_LEN 6 | ||||
/* | ||||
* Structure of a 10Mb/s Ethernet header. | ||||
*/ | ||||
struct ether_hdr | ||||
{ | ||||
uint8_t dhost[ETH_ADDR_LEN]; | ||||
uint8_t shost[ETH_ADDR_LEN]; | ||||
uint16_t type; /* higher layer protocol encapsulated */ | ||||
}; | ||||
typedef struct ether_hdr ether_hdr_t; | ||||
/* ************************************* */ | /* ************************************* */ | |||
struct ip { | struct ip { | |||
#if BYTE_ORDER == LITTLE_ENDIAN | #if BYTE_ORDER == LITTLE_ENDIAN | |||
u_char ip_hl:4, /* header length */ | u_char ip_hl:4, /* header length */ | |||
ip_v:4; /* version */ | ip_v:4; /* version */ | |||
#else | #else | |||
u_char ip_v:4, /* version */ | u_char ip_v:4, /* version */ | |||
ip_hl:4; /* header length */ | ip_hl:4; /* header length */ | |||
#endif | #endif | |||
skipping to change at line 99 | skipping to change at line 74 | |||
#define IP_OFFMASK 0x1fff /* mask for fragmenting bits */ | #define IP_OFFMASK 0x1fff /* mask for fragmenting bits */ | |||
u_char ip_ttl; /* time to live */ | u_char ip_ttl; /* time to live */ | |||
u_char ip_p; /* protocol */ | u_char ip_p; /* protocol */ | |||
u_short ip_sum; /* checksum */ | u_short ip_sum; /* checksum */ | |||
struct in_addr ip_src,ip_dst; /* source and dest address */ | struct in_addr ip_src,ip_dst; /* source and dest address */ | |||
}; | }; | |||
/* ************************************* */ | /* ************************************* */ | |||
typedef struct tuntap_dev { | typedef struct tuntap_dev { | |||
HANDLE device_handle; | HANDLE device_handle; | |||
char *device_name; | char *device_name; | |||
char *ifName; | char *ifName; | |||
OVERLAPPED overlap_read, overlap_write; | int if_idx; | |||
uint8_t mac_addr[6]; | OVERLAPPED overlap_read, overlap_write; | |||
uint32_t ip_addr, device_mask; | n2n_mac_t mac_addr; | |||
unsigned int mtu; | uint32_t ip_addr; | |||
uint32_t device_mask; | ||||
unsigned int mtu; | ||||
unsigned int metric; | ||||
unsigned int metric_original; | ||||
} tuntap_dev; | } tuntap_dev; | |||
/* ************************************* */ | ||||
#define index(a, b) strchr(a, b) | #define index(a, b) strchr(a, b) | |||
#define sleep(x) Sleep(x * 1000) | #define sleep(x) Sleep(x * 1000) | |||
/* ************************************* */ | ||||
#define HAVE_PTHREAD | ||||
#define pthread_t HANDLE | ||||
#define pthread_mutex_t HANDLE | ||||
#define pthread_create(p_thread_handle, attr, thread_func, p_param) | ||||
\ | ||||
(*p_thread_handle = CreateThread(0 /* default security flags */, 0 /*default | ||||
stack*/, \ | ||||
thread_func, p_param, 0 /* default creation flags */, | ||||
\ | ||||
NULL) == 0) | ||||
#define pthread_cancel(p_thread_handle) \ | ||||
TerminateThread(p_thread_handle, 0) | ||||
#define pthread_mutex_init(p_mutex_handle, attr) \ | ||||
*p_mutex_handle = CreateMutex(NULL /*default security flags */, \ | ||||
FALSE /* initially not owned */, NULL /* unnamed */) | ||||
#define pthread_mutex_lock(mutex) \ | ||||
WaitForSingleObject(*mutex, INFINITE) | ||||
#define pthread_mutex_trylock(mutex) \ | ||||
WaitForSingleObject(*mutex, NULL) | ||||
#define pthread_mutex_unlock(mutex) \ | ||||
ReleaseMutex(*mutex) | ||||
/* ************************************* */ | ||||
#endif | #endif | |||
End of changes. 7 change blocks. | ||||
40 lines changed or deleted | 53 lines changed or added |