diff --git a/dll/windivert.c b/dll/windivert.c index 5fb8ece..be4ea70 100644 --- a/dll/windivert.c +++ b/dll/windivert.c @@ -43,7 +43,9 @@ #include #include -#define WINDIVERTEXPORT +#ifndef WINDIVERTEXPORT +#define WINDIVERTEXPORT extern +#endif #include "windivert.h" #include "windivert_device.h" @@ -152,8 +154,7 @@ static HMODULE module = NULL; /* * Dll Entry */ -extern BOOL APIENTRY WinDivertDllEntry(HANDLE module0, DWORD reason, - LPVOID reserved) +BOOL APIENTRY WinDivertDllEntry(HANDLE module0, DWORD reason, LPVOID reserved) { HANDLE event; switch (reason) @@ -420,8 +421,8 @@ static BOOL WinDivertIoControl(HANDLE handle, DWORD code, /* * Open a WinDivert handle. */ -extern HANDLE WinDivertOpen(const char *filter, WINDIVERT_LAYER layer, - INT16 priority, UINT64 flags) +HANDLE WinDivertOpen(const char *filter, WINDIVERT_LAYER layer, INT16 priority, + UINT64 flags) { WINDIVERT_FILTER *object; UINT obj_len; @@ -588,8 +589,8 @@ extern HANDLE WinDivertOpen(const char *filter, WINDIVERT_LAYER layer, /* * Receive a WinDivert packet. */ -extern BOOL WinDivertRecv(HANDLE handle, PVOID pPacket, UINT packetLen, - UINT *readLen, PWINDIVERT_ADDRESS addr) +BOOL WinDivertRecv(HANDLE handle, PVOID pPacket, UINT packetLen, UINT *readLen, + PWINDIVERT_ADDRESS addr) { WINDIVERT_IOCTL ioctl; memset(&ioctl, 0, sizeof(ioctl)); @@ -602,7 +603,7 @@ extern BOOL WinDivertRecv(HANDLE handle, PVOID pPacket, UINT packetLen, /* * Receive a WinDivert packet. */ -extern BOOL WinDivertRecvEx(HANDLE handle, PVOID pPacket, UINT packetLen, +BOOL WinDivertRecvEx(HANDLE handle, PVOID pPacket, UINT packetLen, UINT *readLen, UINT64 flags, PWINDIVERT_ADDRESS addr, UINT *pAddrLen, LPOVERLAPPED overlapped) { @@ -630,7 +631,7 @@ extern BOOL WinDivertRecvEx(HANDLE handle, PVOID pPacket, UINT packetLen, /* * Send a WinDivert packet. */ -extern BOOL WinDivertSend(HANDLE handle, const VOID *pPacket, UINT packetLen, +BOOL WinDivertSend(HANDLE handle, const VOID *pPacket, UINT packetLen, UINT *writeLen, const WINDIVERT_ADDRESS *addr) { WINDIVERT_IOCTL ioctl; @@ -644,7 +645,7 @@ extern BOOL WinDivertSend(HANDLE handle, const VOID *pPacket, UINT packetLen, /* * Send a WinDivert packet. */ -extern BOOL WinDivertSendEx(HANDLE handle, const VOID *pPacket, UINT packetLen, +BOOL WinDivertSendEx(HANDLE handle, const VOID *pPacket, UINT packetLen, UINT *writeLen, UINT64 flags, const WINDIVERT_ADDRESS *addr, UINT addrLen, LPOVERLAPPED overlapped) { @@ -672,7 +673,7 @@ extern BOOL WinDivertSendEx(HANDLE handle, const VOID *pPacket, UINT packetLen, /* * Shutdown a WinDivert handle. */ -extern BOOL WinDivertShutdown(HANDLE handle, WINDIVERT_SHUTDOWN how) +BOOL WinDivertShutdown(HANDLE handle, WINDIVERT_SHUTDOWN how) { WINDIVERT_IOCTL ioctl; memset(&ioctl, 0, sizeof(ioctl)); @@ -684,7 +685,7 @@ extern BOOL WinDivertShutdown(HANDLE handle, WINDIVERT_SHUTDOWN how) /* * Close a WinDivert handle. */ -extern BOOL WinDivertClose(HANDLE handle) +BOOL WinDivertClose(HANDLE handle) { return CloseHandle(handle); } @@ -692,8 +693,7 @@ extern BOOL WinDivertClose(HANDLE handle) /* * Set a WinDivert parameter. */ -extern BOOL WinDivertSetParam(HANDLE handle, WINDIVERT_PARAM param, - UINT64 value) +BOOL WinDivertSetParam(HANDLE handle, WINDIVERT_PARAM param, UINT64 value) { WINDIVERT_IOCTL ioctl; memset(&ioctl, 0, sizeof(ioctl)); @@ -706,8 +706,7 @@ extern BOOL WinDivertSetParam(HANDLE handle, WINDIVERT_PARAM param, /* * Get a WinDivert parameter. */ -extern BOOL WinDivertGetParam(HANDLE handle, WINDIVERT_PARAM param, - UINT64 *pValue) +BOOL WinDivertGetParam(HANDLE handle, WINDIVERT_PARAM param, UINT64 *pValue) { WINDIVERT_IOCTL ioctl; memset(&ioctl, 0, sizeof(ioctl)); diff --git a/dll/windivert_helper.c b/dll/windivert_helper.c index 4ad2c23..537602b 100644 --- a/dll/windivert_helper.c +++ b/dll/windivert_helper.c @@ -272,7 +272,7 @@ static void WinDivertFormatExpr(PWINDIVERT_STREAM stream, PEXPR expr, /* * Parse an IPv4 address. */ -extern BOOL WinDivertHelperParseIPv4Address(const char *str, UINT32 *addr_ptr) +BOOL WinDivertHelperParseIPv4Address(const char *str, UINT32 *addr_ptr) { UINT32 addr = 0; UINT32 part, i; @@ -312,7 +312,7 @@ extern BOOL WinDivertHelperParseIPv4Address(const char *str, UINT32 *addr_ptr) /* * Parse an IPv6 address. */ -extern BOOL WinDivertHelperParseIPv6Address(const char *str, UINT32 *addr_ptr) +BOOL WinDivertHelperParseIPv6Address(const char *str, UINT32 *addr_ptr) { UINT16 laddr[8] = {0}; UINT16 raddr[8] = {0}; @@ -467,7 +467,7 @@ static PTOKEN_INFO WinDivertTokenLookup(PTOKEN_INFO token_info, /* * Parse IPv4/IPv6/ICMP/ICMPv6/TCP/UDP headers from a raw packet. */ -extern BOOL WinDivertHelperParsePacket(const VOID *pPacket, UINT packetLen, +BOOL WinDivertHelperParsePacket(const VOID *pPacket, UINT packetLen, PWINDIVERT_IPHDR *ppIPHeader, PWINDIVERT_IPV6HDR *ppIPv6Header, UINT8 *pProtocol, PWINDIVERT_ICMPHDR *ppICMPHeader, PWINDIVERT_ICMPV6HDR *ppICMPv6Header, PWINDIVERT_TCPHDR *ppTCPHeader, @@ -2354,9 +2354,8 @@ static const char *WinDivertErrorString(UINT code) /* * Compile the given filter string. */ -extern BOOL WinDivertHelperCompileFilter(const char *filter_str, - WINDIVERT_LAYER layer, char *object, UINT obj_len, const char **error, - UINT *error_pos) +BOOL WinDivertHelperCompileFilter(const char *filter_str, WINDIVERT_LAYER layer, + char *object, UINT obj_len, const char **error, UINT *error_pos) { HANDLE pool; ERROR err; @@ -2438,7 +2437,7 @@ static BOOL WinDivertGetData(const VOID *packet, UINT packet_len, INT min, /* * Evaluate the given filter with the given packet as input. */ -extern BOOL WinDivertHelperEvalFilter(const char *filter, const VOID *packet, +BOOL WinDivertHelperEvalFilter(const char *filter, const VOID *packet, UINT packet_len, const WINDIVERT_ADDRESS *addr) { ERROR err; @@ -3556,8 +3555,7 @@ static void WinDivertFormatIPv6Addr(PWINDIVERT_STREAM stream, /* * Format an IPv4 address. */ -extern BOOL WinDivertHelperFormatIPv4Address(UINT32 addr, char *buffer, - UINT bufLen) +BOOL WinDivertHelperFormatIPv4Address(UINT32 addr, char *buffer, UINT bufLen) { WINDIVERT_STREAM stream; stream.data = buffer; @@ -3577,7 +3575,7 @@ extern BOOL WinDivertHelperFormatIPv4Address(UINT32 addr, char *buffer, /* * Format an IPv6 address. */ -extern BOOL WinDivertHelperFormatIPv6Address(const UINT32 *addr, char *buffer, +BOOL WinDivertHelperFormatIPv6Address(const UINT32 *addr, char *buffer, UINT bufLen) { WINDIVERT_STREAM stream; @@ -4176,7 +4174,7 @@ WinDivertHelperFormatFilterError: /* * WinDivert packet hash function. */ -extern UINT64 WinDivertHelperHashPacket(const VOID *pPacket, UINT packetLen, +UINT64 WinDivertHelperHashPacket(const VOID *pPacket, UINT packetLen, UINT64 seed) { PWINDIVERT_IPHDR ip_header = NULL; @@ -4199,27 +4197,27 @@ extern UINT64 WinDivertHelperHashPacket(const VOID *pPacket, UINT packetLen, /* * Byte ordering. */ -extern UINT16 WinDivertHelperNtohs(UINT16 x) +UINT16 WinDivertHelperNtohs(UINT16 x) { return BYTESWAP16(x); } -extern UINT16 WinDivertHelperHtons(UINT16 x) +UINT16 WinDivertHelperHtons(UINT16 x) { return BYTESWAP16(x); } -extern UINT32 WinDivertHelperNtohl(UINT32 x) +UINT32 WinDivertHelperNtohl(UINT32 x) { return BYTESWAP32(x); } -extern UINT32 WinDivertHelperHtonl(UINT32 x) +UINT32 WinDivertHelperHtonl(UINT32 x) { return BYTESWAP32(x); } -extern UINT64 WinDivertHelperNtohll(UINT64 x) +UINT64 WinDivertHelperNtohll(UINT64 x) { return BYTESWAP64(x); } -extern UINT64 WinDivertHelperHtonll(UINT64 x) +UINT64 WinDivertHelperHtonll(UINT64 x) { return BYTESWAP64(x); } @@ -4235,21 +4233,21 @@ static void WinDivertByteSwap128(const UINT *inAddr, UINT *outAddr) outAddr[i] = tmp[i]; } } -extern void WinDivertHelperNtohIPv6Address(const UINT *inAddr, UINT *outAddr) +void WinDivertHelperNtohIPv6Address(const UINT *inAddr, UINT *outAddr) { WinDivertByteSwap128(inAddr, outAddr); } -extern void WinDivertHelperHtonIPv6Address(const UINT *inAddr, UINT *outAddr) +void WinDivertHelperHtonIPv6Address(const UINT *inAddr, UINT *outAddr) { WinDivertByteSwap128(inAddr, outAddr); } // Old names to be removed in next version -extern void WinDivertHelperNtohIpv6Address(const UINT *inAddr, UINT *outAddr) +void WinDivertHelperNtohIpv6Address(const UINT *inAddr, UINT *outAddr) { WinDivertByteSwap128(inAddr, outAddr); } -extern void WinDivertHelperHtonIpv6Address(const UINT *inAddr, UINT *outAddr) +void WinDivertHelperHtonIpv6Address(const UINT *inAddr, UINT *outAddr) { WinDivertByteSwap128(inAddr, outAddr); } diff --git a/dll/windivert_shared.c b/dll/windivert_shared.c index 986f43b..f192376 100644 --- a/dll/windivert_shared.c +++ b/dll/windivert_shared.c @@ -549,7 +549,7 @@ WinDivertHelperParsePacketExit: /* * Calculate IPv4/IPv6/ICMP/ICMPv6/TCP/UDP checksums. */ -extern BOOL WinDivertHelperCalcChecksums(PVOID pPacket, UINT packetLen, +BOOL WinDivertHelperCalcChecksums(PVOID pPacket, UINT packetLen, WINDIVERT_ADDRESS *pAddr, UINT64 flags) { UINT8 pseudo_header[ @@ -754,7 +754,7 @@ static UINT16 WinDivertCalcChecksum(PVOID pseudo_header, /* * Decrement the TTL. */ -extern BOOL WinDivertHelperDecrementTTL(VOID *packet, UINT packetLen) +BOOL WinDivertHelperDecrementTTL(VOID *packet, UINT packetLen) { PWINDIVERT_IPHDR ip_header; PWINDIVERT_IPV6HDR ipv6_header; diff --git a/include/windivert.h b/include/windivert.h index 49d6e66..fc63adf 100644 --- a/include/windivert.h +++ b/include/windivert.h @@ -40,7 +40,7 @@ #endif /* WINDIVERT_KERNEL */ #ifndef WINDIVERTEXPORT -#define WINDIVERTEXPORT __declspec(dllimport) +#define WINDIVERTEXPORT extern __declspec(dllimport) #endif /* WINDIVERTEXPORT */ #ifdef __MINGW32__ @@ -226,7 +226,7 @@ typedef enum /* * Open a WinDivert handle. */ -extern WINDIVERTEXPORT HANDLE WinDivertOpen( +WINDIVERTEXPORT HANDLE WinDivertOpen( __in const char *filter, __in WINDIVERT_LAYER layer, __in INT16 priority, @@ -235,7 +235,7 @@ extern WINDIVERTEXPORT HANDLE WinDivertOpen( /* * Receive (read) a packet from a WinDivert handle. */ -extern WINDIVERTEXPORT BOOL WinDivertRecv( +WINDIVERTEXPORT BOOL WinDivertRecv( __in HANDLE handle, __out_opt VOID *pPacket, __in UINT packetLen, @@ -245,7 +245,7 @@ extern WINDIVERTEXPORT BOOL WinDivertRecv( /* * Receive (read) a packet from a WinDivert handle. */ -extern WINDIVERTEXPORT BOOL WinDivertRecvEx( +WINDIVERTEXPORT BOOL WinDivertRecvEx( __in HANDLE handle, __out_opt VOID *pPacket, __in UINT packetLen, @@ -258,7 +258,7 @@ extern WINDIVERTEXPORT BOOL WinDivertRecvEx( /* * Send (write/inject) a packet to a WinDivert handle. */ -extern WINDIVERTEXPORT BOOL WinDivertSend( +WINDIVERTEXPORT BOOL WinDivertSend( __in HANDLE handle, __in const VOID *pPacket, __in UINT packetLen, @@ -268,7 +268,7 @@ extern WINDIVERTEXPORT BOOL WinDivertSend( /* * Send (write/inject) a packet to a WinDivert handle. */ -extern WINDIVERTEXPORT BOOL WinDivertSendEx( +WINDIVERTEXPORT BOOL WinDivertSendEx( __in HANDLE handle, __in const VOID *pPacket, __in UINT packetLen, @@ -281,20 +281,20 @@ extern WINDIVERTEXPORT BOOL WinDivertSendEx( /* * Shutdown a WinDivert handle. */ -extern WINDIVERTEXPORT BOOL WinDivertShutdown( +WINDIVERTEXPORT BOOL WinDivertShutdown( __in HANDLE handle, __in WINDIVERT_SHUTDOWN how); /* * Close a WinDivert handle. */ -extern WINDIVERTEXPORT BOOL WinDivertClose( +WINDIVERTEXPORT BOOL WinDivertClose( __in HANDLE handle); /* * Set a WinDivert handle parameter. */ -extern WINDIVERTEXPORT BOOL WinDivertSetParam( +WINDIVERTEXPORT BOOL WinDivertSetParam( __in HANDLE handle, __in WINDIVERT_PARAM param, __in UINT64 value); @@ -302,7 +302,7 @@ extern WINDIVERTEXPORT BOOL WinDivertSetParam( /* * Get a WinDivert handle parameter. */ -extern WINDIVERTEXPORT BOOL WinDivertGetParam( +WINDIVERTEXPORT BOOL WinDivertGetParam( __in HANDLE handle, __in WINDIVERT_PARAM param, __out UINT64 *pValue); @@ -487,7 +487,7 @@ typedef struct /* * Hash a packet. */ -extern WINDIVERTEXPORT UINT64 WinDivertHelperHashPacket( +WINDIVERTEXPORT UINT64 WinDivertHelperHashPacket( __in const VOID *pPacket, __in UINT packetLen, __in UINT64 seed @@ -499,7 +499,7 @@ extern WINDIVERTEXPORT UINT64 WinDivertHelperHashPacket( /* * Parse IPv4/IPv6/ICMP/ICMPv6/TCP/UDP headers from a raw packet. */ -extern WINDIVERTEXPORT BOOL WinDivertHelperParsePacket( +WINDIVERTEXPORT BOOL WinDivertHelperParsePacket( __in const VOID *pPacket, __in UINT packetLen, __out_opt PWINDIVERT_IPHDR *ppIpHdr, @@ -517,21 +517,21 @@ extern WINDIVERTEXPORT BOOL WinDivertHelperParsePacket( /* * Parse an IPv4 address. */ -extern WINDIVERTEXPORT BOOL WinDivertHelperParseIPv4Address( +WINDIVERTEXPORT BOOL WinDivertHelperParseIPv4Address( __in const char *addrStr, __out_opt UINT32 *pAddr); /* * Parse an IPv6 address. */ -extern WINDIVERTEXPORT BOOL WinDivertHelperParseIPv6Address( +WINDIVERTEXPORT BOOL WinDivertHelperParseIPv6Address( __in const char *addrStr, __out_opt UINT32 *pAddr); /* * Format an IPv4 address. */ -extern WINDIVERTEXPORT BOOL WinDivertHelperFormatIPv4Address( +WINDIVERTEXPORT BOOL WinDivertHelperFormatIPv4Address( __in UINT32 addr, __out char *buffer, __in UINT bufLen); @@ -539,7 +539,7 @@ extern WINDIVERTEXPORT BOOL WinDivertHelperFormatIPv4Address( /* * Format an IPv6 address. */ -extern WINDIVERTEXPORT BOOL WinDivertHelperFormatIPv6Address( +WINDIVERTEXPORT BOOL WinDivertHelperFormatIPv6Address( __in const UINT32 *pAddr, __out char *buffer, __in UINT bufLen); @@ -547,7 +547,7 @@ extern WINDIVERTEXPORT BOOL WinDivertHelperFormatIPv6Address( /* * Calculate IPv4/IPv6/ICMP/ICMPv6/TCP/UDP checksums. */ -extern WINDIVERTEXPORT BOOL WinDivertHelperCalcChecksums( +WINDIVERTEXPORT BOOL WinDivertHelperCalcChecksums( __inout VOID *pPacket, __in UINT packetLen, __out_opt WINDIVERT_ADDRESS *pAddr, @@ -556,14 +556,14 @@ extern WINDIVERTEXPORT BOOL WinDivertHelperCalcChecksums( /* * Decrement the TTL/HopLimit. */ -extern WINDIVERTEXPORT BOOL WinDivertHelperDecrementTTL( +WINDIVERTEXPORT BOOL WinDivertHelperDecrementTTL( __inout VOID *pPacket, __in UINT packetLen); /* * Compile the given filter string. */ -extern WINDIVERTEXPORT BOOL WinDivertHelperCompileFilter( +WINDIVERTEXPORT BOOL WinDivertHelperCompileFilter( __in const char *filter, __in WINDIVERT_LAYER layer, __out_opt char *object, @@ -574,7 +574,7 @@ extern WINDIVERTEXPORT BOOL WinDivertHelperCompileFilter( /* * Evaluate the given filter string. */ -extern WINDIVERTEXPORT BOOL WinDivertHelperEvalFilter( +WINDIVERTEXPORT BOOL WinDivertHelperEvalFilter( __in const char *filter, __in const VOID *pPacket, __in UINT packetLen, @@ -583,7 +583,7 @@ extern WINDIVERTEXPORT BOOL WinDivertHelperEvalFilter( /* * Format the given filter string. */ -extern WINDIVERTEXPORT BOOL WinDivertHelperFormatFilter( +WINDIVERTEXPORT BOOL WinDivertHelperFormatFilter( __in const char *filter, __in WINDIVERT_LAYER layer, __out char *buffer, @@ -592,32 +592,32 @@ extern WINDIVERTEXPORT BOOL WinDivertHelperFormatFilter( /* * Byte ordering. */ -extern WINDIVERTEXPORT UINT16 WinDivertHelperNtohs( +WINDIVERTEXPORT UINT16 WinDivertHelperNtohs( __in UINT16 x); -extern WINDIVERTEXPORT UINT16 WinDivertHelperHtons( +WINDIVERTEXPORT UINT16 WinDivertHelperHtons( __in UINT16 x); -extern WINDIVERTEXPORT UINT32 WinDivertHelperNtohl( +WINDIVERTEXPORT UINT32 WinDivertHelperNtohl( __in UINT32 x); -extern WINDIVERTEXPORT UINT32 WinDivertHelperHtonl( +WINDIVERTEXPORT UINT32 WinDivertHelperHtonl( __in UINT32 x); -extern WINDIVERTEXPORT UINT64 WinDivertHelperNtohll( +WINDIVERTEXPORT UINT64 WinDivertHelperNtohll( __in UINT64 x); -extern WINDIVERTEXPORT UINT64 WinDivertHelperHtonll( +WINDIVERTEXPORT UINT64 WinDivertHelperHtonll( __in UINT64 x); -extern WINDIVERTEXPORT void WinDivertHelperNtohIPv6Address( +WINDIVERTEXPORT void WinDivertHelperNtohIPv6Address( __in const UINT *inAddr, __out UINT *outAddr); -extern WINDIVERTEXPORT void WinDivertHelperHtonIPv6Address( +WINDIVERTEXPORT void WinDivertHelperHtonIPv6Address( __in const UINT *inAddr, __out UINT *outAddr); /* * Old names to be removed in the next version. */ -extern WINDIVERTEXPORT void WinDivertHelperNtohIpv6Address( +WINDIVERTEXPORT void WinDivertHelperNtohIpv6Address( __in const UINT *inAddr, __out UINT *outAddr); -extern WINDIVERTEXPORT void WinDivertHelperHtonIpv6Address( +WINDIVERTEXPORT void WinDivertHelperHtonIpv6Address( __in const UINT *inAddr, __out UINT *outAddr);