www.pudn.com > NETINFO.rar > acl.h
#ifndef _ACL_H_
#define _ACL_H_
enum ACL_PEMMISION_TYPE {ACL_ALLOW, ACL_DENY};
struct TCPUDP_ACL_RANGE
{
IP_ADDR addrLow;
WORD portLow;
IP_ADDR addrHigh;
WORD portHigh;
};
struct ACL_ITEM
{
enum ACL_PEMMISION_TYPE permit;
TCPUDP_ACL_RANGE src;
TCPUDP_ACL_RANGE dst;
//The Microsoft run-time library defines time_t
time_t validUntil;
};
BOOL LoadAcl(const char* filename, CPtrList *pList);
//CPtrList class supports lists of void pointers
BOOL TcpShouldDeny(const CPtrList *pList, const IP* ip, const TCP* tcp);
void ClearAcl(CPtrList *pList);
BOOL MakeRstTcpPacket(const ETHERNET* ether, const IP* ip, const TCP* tcp, BOOL bSameDirection,
WORD dataLen, BYTE* buffer, DWORD bufferSize, DWORD *packetLength,
BOOL bReplySynToSyn = FALSE, BOOL bImpostureData = FALSE);
BOOL MakeICMPUnreachablePacket(const ETHERNET* ether, const IP* ip, const BYTE* ipDigest, DWORD ipDigestLen,
BYTE* buffer, DWORD bufferSize, DWORD *packetLength);
BOOL MakeRstTcpPacketV2(const BYTE etherSrc[ETHERNET_ADDR_LEN], const BYTE etherDst[ETHERNET_ADDR_LEN],
const IP_ADDR *ipSrc, const IP_ADDR *ipDst,
const WORD portSrc, const WORD portDst,
const DWORD seqSrc, const DWORD seqDst,
BYTE* buffer, DWORD bufferSize, DWORD *packetLength);
#endif