#include <netfilter.h>
Inherited by BazisLib::Network::Filters::_DummyNetworkFilter, and BazisLib::Network::Filters::BasicHTTPFilter.
Classes | |
struct | SystemSocketContext |
struct | WinsockPointers |
Public Member Functions | |
NetworkFilterBase () | |
ActionStatus | InstallFilter (BazisLib::Network::Filters::FilterMode mode, IDLLPatcher *pPatcher) |
ActionStatus | UninstallFilter (IDLLPatcher *pPatcher) |
~NetworkFilterBase () | |
Protected Member Functions | |
void | SignalDataReceivedEvent (void *pSystemContext) |
Fires the 'receive ready' event. | |
virtual BazisLib::ActionStatus | OnStartConnect (BazisLib::Network::_PlatformSpecificInternetAddress *pAddr, void **ppUserContext) |
virtual void | OnDisconnect (void *pSystemContext, void *pUserContext) |
virtual size_t | OnSend (void *pSystemContext, void *pSystemContext2, void *pBuf, size_t MaxSize, void *pUserContext, bool ForceBlockingMode) |
virtual size_t | OnReceive (void *pSystemContext, void *pSystemContext2, void *pBuf, size_t MaxSize, void *pUserContext, bool ForceBlockingMode) |
virtual void | FreeUserContext (void *p) |
Private Types | |
enum | { FilteredEventReceive = 0, FilteredEventCount } |
enum | { SystemSockReceivedData = 0x0002 } |
typedef int | len |
typedef int int | flags |
typedef int | len |
typedef int int | flags |
typedef struct sockaddr * | name |
typedef struct sockaddr int | namelen |
typedef std::map< SOCKET, SystemSocketContext * > | ContextMap |
typedef int(WSAAPI * | WSAConnect_ptr )(IN SOCKET s, IN const struct sockaddr FAR *name, IN int namelen, IN LPWSABUF lpCallerData, OUT LPWSABUF lpCalleeData, IN LPQOS lpSQOS, IN LPQOS lpGQOS) |
typedef SOCKET(WSAAPI * | socket_ptr )(IN int af, IN int type, IN int protocol) |
typedef int(WSAAPI * | WSAEventSelect_ptr )(IN SOCKET s, IN WSAEVENT hEventObject, IN long lNetworkEvents) |
typedef int(WSAAPI * | WSAEnumNetworkEvents_ptr )(IN SOCKET s, IN WSAEVENT hEventObject, OUT LPWSANETWORKEVENTS lpNetworkEvents) |
Private Member Functions | |
typedef | int (WSAAPI *recv_ptr)(SOCKET s |
typedef | __out_bcount (len) char *buf |
typedef | int (WSAAPI *send_ptr)(SOCKET s |
typedef | __in_bcount (len) const char *buf |
typedef | int (WSAAPI *connect_ptr)(SOCKET s |
typedef | int (WSAAPI *closesocket_ptr)(SOCKET s) |
SystemSocketContext * | GetSystemContextForSocket (SOCKET s) |
void * | GetUserContextForSocket (SOCKET s) |
void | FreeAndRemoveContextForSocket (SOCKET s) |
Static Private Member Functions | |
static int WSAAPI | recv_override (SOCKET s, __out_bcount(len) char *buf, int len, int flags) |
static int WSAAPI | send_override (SOCKET s, __in_bcount(len) const char *buf, int len, int flags) |
static int WSAAPI | connect_override (SOCKET s, const struct sockaddr *name, int namelen) |
static int WSAAPI | WSAConnect_override (IN SOCKET s, IN const struct sockaddr FAR *name, IN int namelen, IN LPWSABUF lpCallerData, OUT LPWSABUF lpCalleeData, IN LPQOS lpSQOS, IN LPQOS lpGQOS) |
static int WSAAPI | closesocket_override (SOCKET s) |
static SOCKET WSAAPI | socket_override (IN int af, IN int type, IN int protocol) |
static int WSAAPI | WSAEventSelect_override (IN SOCKET s, IN WSAEVENT hEventObject, IN long lNetworkEvents) |
static int WSAAPI | WSAEnumNetworkEvents_override (IN SOCKET s, IN WSAEVENT hEventObject, OUT LPWSANETWORKEVENTS lpNetworkEvents) |
Private Attributes | |
ContextMap | m_UserContextMap |
InProcessMutex | m_ContextMapMutex |
WinsockPointers | m_OriginalPointers |
Static Private Attributes | |
static NetworkFilterBase * | m_pInstalledFilter |
This class is a basic network filter for WIN32 environment. It acts by replacing import table pointers to WINSOCK functions by its own function pointers, using IDLLPatcher interface for that. The IDLLPatcher should be provided by caller.
typedef std::map<SOCKET, SystemSocketContext *> BazisLib::Win32::NetworkFilterBase::ContextMap [private] |
typedef int int BazisLib::Win32::NetworkFilterBase::flags [private] |
typedef int int BazisLib::Win32::NetworkFilterBase::flags [private] |
typedef int BazisLib::Win32::NetworkFilterBase::len [private] |
typedef int BazisLib::Win32::NetworkFilterBase::len [private] |
typedef struct sockaddr* BazisLib::Win32::NetworkFilterBase::name [read, private] |
typedef struct sockaddr int BazisLib::Win32::NetworkFilterBase::namelen [read, private] |
typedef SOCKET(WSAAPI * BazisLib::Win32::NetworkFilterBase::socket_ptr)(IN int af, IN int type, IN int protocol) [private] |
typedef int(WSAAPI * BazisLib::Win32::NetworkFilterBase::WSAConnect_ptr)(IN SOCKET s, IN const struct sockaddr FAR *name, IN int namelen, IN LPWSABUF lpCallerData, OUT LPWSABUF lpCalleeData, IN LPQOS lpSQOS, IN LPQOS lpGQOS) [private] |
typedef int(WSAAPI * BazisLib::Win32::NetworkFilterBase::WSAEnumNetworkEvents_ptr)(IN SOCKET s, IN WSAEVENT hEventObject, OUT LPWSANETWORKEVENTS lpNetworkEvents) [private] |
typedef int(WSAAPI * BazisLib::Win32::NetworkFilterBase::WSAEventSelect_ptr)(IN SOCKET s, IN WSAEVENT hEventObject, IN long lNetworkEvents) [private] |
BazisLib::Win32::NetworkFilterBase::NetworkFilterBase | ( | ) |
BazisLib::Win32::NetworkFilterBase::~NetworkFilterBase | ( | ) |
typedef BazisLib::Win32::NetworkFilterBase::__in_bcount | ( | len | ) | const [private] |
typedef BazisLib::Win32::NetworkFilterBase::__out_bcount | ( | len | ) | [private] |
static int WSAAPI BazisLib::Win32::NetworkFilterBase::closesocket_override | ( | SOCKET | s | ) | [static, private] |
static int WSAAPI BazisLib::Win32::NetworkFilterBase::connect_override | ( | SOCKET | s, | |
const struct sockaddr * | name, | |||
int | namelen | |||
) | [static, private] |
void BazisLib::Win32::NetworkFilterBase::FreeAndRemoveContextForSocket | ( | SOCKET | s | ) | [private] |
virtual void BazisLib::Win32::NetworkFilterBase::FreeUserContext | ( | void * | p | ) | [inline, protected, virtual] |
Reimplemented in BazisLib::Network::Filters::_DummyNetworkFilter, and BazisLib::Network::Filters::BasicHTTPFilter.
SystemSocketContext* BazisLib::Win32::NetworkFilterBase::GetSystemContextForSocket | ( | SOCKET | s | ) | [private] |
void* BazisLib::Win32::NetworkFilterBase::GetUserContextForSocket | ( | SOCKET | s | ) | [private] |
ActionStatus BazisLib::Win32::NetworkFilterBase::InstallFilter | ( | BazisLib::Network::Filters::FilterMode | mode, | |
IDLLPatcher * | pPatcher | |||
) |
typedef BazisLib::Win32::NetworkFilterBase::int | ( | WSAAPI * | closesocket_ptr | ) | [private] |
typedef BazisLib::Win32::NetworkFilterBase::int | ( | WSAAPI * | connect_ptr | ) | [private] |
typedef BazisLib::Win32::NetworkFilterBase::int | ( | WSAAPI * | send_ptr | ) | [private] |
typedef BazisLib::Win32::NetworkFilterBase::int | ( | WSAAPI * | recv_ptr | ) | [private] |
virtual void BazisLib::Win32::NetworkFilterBase::OnDisconnect | ( | void * | pSystemContext, | |
void * | pUserContext | |||
) | [protected, virtual] |
Reimplemented in BazisLib::Network::Filters::_DummyNetworkFilter, and BazisLib::Network::Filters::BasicHTTPFilter.
virtual size_t BazisLib::Win32::NetworkFilterBase::OnReceive | ( | void * | pSystemContext, | |
void * | pSystemContext2, | |||
void * | pBuf, | |||
size_t | MaxSize, | |||
void * | pUserContext, | |||
bool | ForceBlockingMode | |||
) | [protected, virtual] |
Reimplemented in BazisLib::Network::Filters::_DummyNetworkFilter, and BazisLib::Network::Filters::BasicHTTPFilter.
virtual size_t BazisLib::Win32::NetworkFilterBase::OnSend | ( | void * | pSystemContext, | |
void * | pSystemContext2, | |||
void * | pBuf, | |||
size_t | MaxSize, | |||
void * | pUserContext, | |||
bool | ForceBlockingMode | |||
) | [protected, virtual] |
Reimplemented in BazisLib::Network::Filters::_DummyNetworkFilter, and BazisLib::Network::Filters::BasicHTTPFilter.
virtual BazisLib::ActionStatus BazisLib::Win32::NetworkFilterBase::OnStartConnect | ( | BazisLib::Network::_PlatformSpecificInternetAddress * | pAddr, | |
void ** | ppUserContext | |||
) | [protected, virtual] |
Reimplemented in BazisLib::Network::Filters::_DummyNetworkFilter, and BazisLib::Network::Filters::BasicHTTPFilter.
static int WSAAPI BazisLib::Win32::NetworkFilterBase::recv_override | ( | SOCKET | s, | |
__out_bcount(len) char * | buf, | |||
int | len, | |||
int | flags | |||
) | [static, private] |
static int WSAAPI BazisLib::Win32::NetworkFilterBase::send_override | ( | SOCKET | s, | |
__in_bcount(len) const char * | buf, | |||
int | len, | |||
int | flags | |||
) | [static, private] |
void BazisLib::Win32::NetworkFilterBase::SignalDataReceivedEvent | ( | void * | pSystemContext | ) | [protected] |
Fires the 'receive ready' event.
This method should be called, for example, from OnSend() handler if the 'receive ready' event needs to be signaled before actual data is received from the remote side.
static SOCKET WSAAPI BazisLib::Win32::NetworkFilterBase::socket_override | ( | IN int | af, | |
IN int | type, | |||
IN int | protocol | |||
) | [static, private] |
ActionStatus BazisLib::Win32::NetworkFilterBase::UninstallFilter | ( | IDLLPatcher * | pPatcher | ) |
static int WSAAPI BazisLib::Win32::NetworkFilterBase::WSAConnect_override | ( | IN SOCKET | s, | |
IN const struct sockaddr FAR * | name, | |||
IN int | namelen, | |||
IN LPWSABUF | lpCallerData, | |||
OUT LPWSABUF | lpCalleeData, | |||
IN LPQOS | lpSQOS, | |||
IN LPQOS | lpGQOS | |||
) | [static, private] |
static int WSAAPI BazisLib::Win32::NetworkFilterBase::WSAEnumNetworkEvents_override | ( | IN SOCKET | s, | |
IN WSAEVENT | hEventObject, | |||
OUT LPWSANETWORKEVENTS | lpNetworkEvents | |||
) | [static, private] |
static int WSAAPI BazisLib::Win32::NetworkFilterBase::WSAEventSelect_override | ( | IN SOCKET | s, | |
IN WSAEVENT | hEventObject, | |||
IN long | lNetworkEvents | |||
) | [static, private] |
NetworkFilterBase* BazisLib::Win32::NetworkFilterBase::m_pInstalledFilter [static, private] |