⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cpgpnetfilteradapter.h

📁 PGP8.0源码 请认真阅读您的文件包然后写出其具体功能
💻 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 + -