📄 cpgpnetfilteradapter.h
字号:
/*____________________________________________________________________________
Copyright (C) 2002 PGP Corporation
All rights reserved.
$Id: CPGPnetFilterAdapter.h,v 1.4 2002/08/06 20:10:26 dallen Exp $
____________________________________________________________________________*/
#ifndef Included_CPGPnetFilterAdapter_h /* [ */
#define Included_CPGPnetFilterAdapter_h
enum PGPnetPacketStatus {
PacketDrop = 0,
PacketPassthrough,
PacketFurtherCheck,
PacketEncrypt
};
#include "pgpNetAttack.h"
typedef struct _PGPnetLastFragmentList PGPnetLastFragmentList;
struct _PGPnetLastFragmentList
{
PGPUInt32 ipAddress;
PGPUInt16 ipId;
PGPByte numLastFragments;
PGPByte numOtherFragments;
PGPByte numBadFragments;
PGPUInt32 lastBadFragment;
PGPnetLastFragmentList *next;
};
class CPGPnetFilterAdapter : public CPGPnetAdapter
{
public:
// BINDING CONNECTION WITH NIC
NDIS_HANDLE NdisBindingHandleToRealAdapter;
NDIS_STRING RealAdapterName;
NDIS_MEDIUM RealAdapterMedia;
PGPByte AnsiRealAdapterName[64];
PGPUInt32 MaximumFrameSize;
// INTERNET PROTOCOL CHARACTERISTICS
PGPUInt32 mIpAddress;
PGPUInt16 mIpId;
PGPBoolean mWanIPAddressDetected;
PGPBoolean indicate_busy;
// ADAPTER PACKETS QUEUES
PGPnetPacket* sent_plainpacket_list;
PGPnetPacket* sent_cfgpacket_list;
PGPnetPacket* incoming_plaintransferComplete_wait_list;
PGPnetPacket* incoming_ipsectransferComplete_wait_list;
PGPnetPacket* incoming_indicateComplete_wait_list;
PGPnetPacket* incoming_fragment_indicateComplete_wait_list;
PGPnetPacket* incoming_mac_transferdata_wait_list;
PGPnetPacket* outgoing_multiple_ipsecpacket_list;
PGPnetPacket* outgoing_multiple_cfgpacket_list;
PGPnetPacketHead* outgoing_local_packet_head_list;
PGPnetPacketHead* outgoing_cfg_packet_head_list;
PGPnetPacketHead* incoming_packet_head_list;
PGPnetPacketHead* sent_packet_head_list;
PGPnetLastFragmentList* last_fragment_list;
public:
CPGPnetFilterAdapter();
~CPGPnetFilterAdapter();
VOID AllocatePacketPool();
VOID FreePacketPool();
PGPBoolean SetRealAdapterName(PNDIS_STRING String);
VOID DoCfgEthernetTransform(PGPnetPacket *inPacket);
VOID DoMTUTransform(PGPnetPacket* packet);
VOID DoCopyTransforms(PGPnetPacket* pgpnetPacket);
VOID DoCopyTransform(PGPnetPacket* pgpnetPacket);
NDIS_STATUS SendPacket(PNDIS_PACKET Packet, PGPUserValue userValue = NULL, PGPBoolean IsCfgPacket = FALSE);
NDIS_STATUS SendPacket(PGPnetPacket *pgpnetPacket);
NDIS_STATUS SendPackets(PGPnetPacket* pgpNetPacket, PGPBoolean bIsCfgPacket);
NDIS_STATUS SendCfgPacket(PGPnetPacket *pgpnetPacket);
PGPnetPacketStatus PGPnetFilterPacketCheck(PGPnetPacket *pgpnetPacket, PGPBoolean incoming);
VOID FragmentPacket(PGPnetPacketHead* packetHead, PGPBoolean incoming);
VOID PreFragmentPacket(PGPnetPacketHead* packetHead, PGPBoolean incoming);
VOID HeadFragmentCollection(PPGPnetPacketHead *packet_list);
VOID FragmentCollection();
virtual NDIS_STATUS OpenAdapterRequest() = 0;
virtual PGPBoolean DeviceOn() = 0;
virtual VOID SendComplete(PNDIS_PACKET Packet,
NDIS_STATUS Status) = 0;
virtual VOID IndicateReceive(NDIS_HANDLE MacContext,
PCHAR HeaderBuffer,
UINT HeaderBufferSize,
PVOID LookAheadBuffer,
UINT LookAheadBufferSize,
UINT PacketSize
) = 0;
virtual VOID IndicateReceiveComplete() = 0;
virtual NDIS_STATUS IndicatePacket(PGPnetPacket* pgpnetPacket);
virtual NDIS_STATUS IndicatePackets(PGPnetPacket* pgpNetPacket, PGPBoolean bIsCfgPacket);
virtual NDIS_STATUS IndicateCfgPacket(PGPnetPacket* pgpnetPacket);
virtual NDIS_STATUS IndicateCfgPacketComplete();
virtual NDIS_STATUS ProtocolReceive(
NDIS_HANDLE MacReceiveContext,
PVOID HeaderBuffer,
UINT HeaderBufferSize,
PVOID LookAheadBuffer,
UINT LookAheadBufferSize,
UINT PacketSize
);
virtual VOID ProtocolReceiveComplete();
virtual VOID ProtocolTransferDataComplete(
PNDIS_PACKET Packet,
NDIS_STATUS Status,
UINT BytesTransferred
);
virtual NDIS_STATUS MacTransferData(
NDIS_HANDLE MacReceiveContext,
UINT ByteOffset,
UINT BytesToTransfer,
PNDIS_PACKET Packet,
PUINT BytesTransferred
) = 0;
virtual NDIS_STATUS TransformAndIndicate(PGPnetPacket* pgpnetPacket);
virtual VOID IndicateStatus(
NDIS_STATUS Status,
PVOID StatusBuffer,
UINT StatusBufferSize
) = 0;
virtual VOID IndicateStatusComplete() = 0;
public:
virtual VOID ProtocolTransferDataRequest(
OUT PNDIS_STATUS Status,
IN NDIS_HANDLE NdisBindingHandle,
IN NDIS_HANDLE MacReceiveContext,
IN UINT ByteOffset,
IN UINT BytesToTransfer,
OUT PNDIS_PACKET Packet,
OUT PUINT BytesTransferred
) = 0; // basicly NdisTransferData in proxy driver.
virtual VOID ProtocolSendRequest(
OUT PNDIS_STATUS Status,
IN NDIS_HANDLE NdisBindingHandle,
IN PNDIS_PACKET Packet
) = 0; // basicly NdisSend in proxy driver
};
#endif /* ] Included_CPGPnetFilterAdapter_h */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -