mirror of https://github.com/IoTcat/vlmcsd.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.2 KiB
50 lines
1.2 KiB
#ifndef __WINTAP_H |
|
#define __WINTAP_H |
|
|
|
#define TAP_REGISTRY_DATA_SIZE 256 |
|
|
|
// Network-Endian (= Big-Endian) |
|
typedef struct TapConfigTun |
|
{ |
|
struct in_addr Address; |
|
struct in_addr Network; |
|
struct in_addr Mask; |
|
} TapConfigTun_t, *PTapConfigTun_t; |
|
|
|
// Network-Endian (= Big-Endian), except LeaseDuration |
|
typedef struct TapConfigDhcp |
|
{ |
|
struct in_addr Address; |
|
struct in_addr Mask; |
|
struct in_addr DhcpServer; |
|
uint32_t LeaseDuration; // Host-Endian (=Little-Endian). Anything else is Big-Endian |
|
} TapConfigDhcp_t, *PTapConfigDhcp_t; |
|
|
|
typedef struct TapDriverVersion |
|
{ |
|
uint32_t Major; |
|
uint32_t Minor; |
|
uint32_t Build; |
|
uint32_t Revision; |
|
} TapDriverVersion_t, *PTapDriverVersion_t; |
|
|
|
// Network-Endian (= Big-Endian) |
|
typedef struct IpPacket { |
|
uint8_t ip_hl : 4, /* header length */ |
|
ip_v : 4; /* version */ |
|
uint8_t ip_tos; /* type of service */ |
|
int16_t ip_len; /* total length */ |
|
uint16_t ip_id; /* identification */ |
|
int16_t ip_off; /* fragment offset field */ |
|
uint8_t ip_ttl; /* time to live */ |
|
uint8_t ip_p; /* protocol */ |
|
uint16_t ip_sum; /* checksum */ |
|
uint32_t ip_src, ip_dst; /* source and dest address */ |
|
uint8_t payload[0]; |
|
} IpPacket_t, *PIpPacket_t; |
|
|
|
void startTap(char* const argument); |
|
|
|
#endif //__WINTAP_H |
|
|
|
|
|
|