www.pudn.com > PIPMasq.zip > PACKET32.H
/* * Copyright (c) 1999, 2000 * Politecnico di Torino. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that: (1) source code distributions * retain the above copyright notice and this paragraph in its entirety, (2) * distributions including binary code include the above copyright notice and * this paragraph in its entirety in the documentation or other materials * provided with the distribution, and (3) all advertising materials mentioning * features or use of this software display the following acknowledgement: * ``This product includes software developed by the Politecnico * di Torino, and its contributors.'' Neither the name of * the University nor the names of its contributors may be used to endorse * or promote products derived from this software without specific prior * written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #ifndef __PACKET32 #define __PACKET32 #include#include "ntddpack.h" #include "ntddndis.h" //working modes #define MODE_CAPT 0 #define MODE_STAT 1 //ioctls #define pBIOCSETBUFFERSIZE 9592 #define pBIOCSETF 9030 #define pBIOCGSTATS 9031 #define pBIOCSRTIMEOUT 7416 #define pBIOCSMODE 7412 #define pBIOCSWRITEREP 7413 #define pBIOCSMINTOCOPY 7414 #define pBIOCSETOID 2147483648 #define pBIOCQUERYOID 2147483652 #define pATTACHPROCESS 7117 #define pDETACHPROCESS 7118 #define pBIOCEVNAME 7415 #define pBIOCSTIMEZONE 7471 //Network type structure typedef struct NetType { UINT LinkType; UINT LinkSpeed; }NetType; // Alignment macros. Packet_WORDALIGN rounds up to the next // even multiple of Packet_ALIGNMENT. #define Packet_ALIGNMENT sizeof(int) #define Packet_WORDALIGN(x) (((x)+(Packet_ALIGNMENT-1))&~(Packet_ALIGNMENT-1)) //some definitions from libpcap #ifndef BPF_MAJOR_VERSION struct bpf_program { UINT bf_len; struct bpf_insn *bf_insns; }; struct bpf_insn { USHORT code; UCHAR jt; UCHAR jf; int k; }; struct bpf_stat { UINT bs_recv; /* number of packets received */ UINT bs_drop; /* number of packets dropped */ }; struct bpf_hdr { struct timeval bh_tstamp; /* time stamp */ UINT bh_caplen; /* length of captured portion */ UINT bh_datalen; /* original length of packet */ USHORT bh_hdrlen; /* length of bpf header (this struct plus alignment padding) */ }; #endif #define DOSNAMEPREFIX TEXT("Packet_") #define MAX_LINK_NAME_LENGTH 64 #define NMAX_PACKET 65535 typedef struct _ADAPTER { HANDLE hFile; TCHAR SymbolicLink[MAX_LINK_NAME_LENGTH]; int NumWrites; HANDLE ReadEvent; UINT ReadTimeOut; } ADAPTER, *LPADAPTER; typedef struct _PACKET { HANDLE hEvent; OVERLAPPED OverLapped; PVOID Buffer; UINT Length; UINT ulBytesReceived; BOOLEAN bIoComplete; } PACKET, *LPPACKET; #ifdef __cplusplus extern "C" { #endif BOOLEAN PacketSetMinToCopy(LPADAPTER AdapterObject,int nbytes); BOOLEAN PacketSetNumWrites(LPADAPTER AdapterObject,int nwrites); BOOLEAN PacketSetMode(LPADAPTER AdapterObject,int mode); BOOLEAN PacketSetMaxLookaheadsize (LPADAPTER AdapterObject); BOOLEAN PacketSetReadTimeout(LPADAPTER AdapterObject,int timeout); BOOLEAN PacketSetBpf(LPADAPTER AdapterObject,struct bpf_program *fp); BOOLEAN PacketGetStats(LPADAPTER AdapterObject,struct bpf_stat *s); BOOLEAN PacketSetBuff(LPADAPTER AdapterObject,int dim); BOOLEAN PacketGetNetType (LPADAPTER AdapterObject,NetType *type); LPADAPTER PacketOpenAdapter(LPTSTR AdapterName); BOOLEAN PacketSendPacket(LPADAPTER AdapterObject,LPPACKET pPacket,BOOLEAN Sync); LPPACKET PacketAllocatePacket(void); LPPACKET PacketAllocateNPacket(UINT n); VOID PacketInitPacket(LPPACKET lpPacket,PVOID Buffer,UINT Length); VOID PacketFreePacket(LPPACKET lpPacket); BOOLEAN PacketResetAdapter(LPADAPTER AdapterObject); BOOLEAN PacketWaitPacket(LPADAPTER AdapterObject,LPPACKET lpPacket); BOOLEAN PacketReceiveNPacket(LPADAPTER AdapterObject,LPPACKET headLPacket,UINT n,UINT length,BYTE* buffer,BOOLEAN Sync); BOOLEAN PacketReceivePacket(LPADAPTER AdapterObject,LPPACKET lpPacket,BOOLEAN Sync); VOID PacketCloseAdapter(LPADAPTER lpAdapter); BOOLEAN PacketSetHwFilter(LPADAPTER AdapterObject,ULONG Filter); BOOLEAN PacketGetAdapterNames(PTSTR pStr,PULONG BufferSize); BOOLEAN PacketGetNetInfo(LPTSTR AdapterName, PULONG netp, PULONG maskp); BOOLEAN PacketRequest(LPADAPTER AdapterObject,BOOLEAN Set,PPACKET_OID_DATA OidData); VOID PacketSetNextPacket(LPPACKET lpPacket, LPPACKET next); VOID PacketSetLengthBuffer(LPPACKET lpPacket, UINT dim); VOID PacketSetLengthPacket(LPPACKET lpPacket, UINT numBytes); LPPACKET PacketGetNextPacket(LPPACKET lpPacket); #ifdef __cplusplus } #endif #endif //__PACKET32