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

📄 info.h

📁 winNT技术操作系统,国外开放的原代码和LIUX一样
💻 H
字号:
/*
 * COPYRIGHT:   See COPYING in the top level directory
 * PROJECT:     ReactOS TCP/IP protocol driver
 * FILE:        include/info.h
 * PURPOSE:     TdiQueryInformation definitions
 */
#ifndef __INFO_H
#define __INFO_H

#define MAX_PHYSADDR_LEN 8
#define MAX_IFDESCR_LEN  256

typedef struct IPSNMP_INFO {
	ULONG Forwarding;
	ULONG DefaultTTL;
	ULONG InReceives;
	ULONG InHdrErrors;
	ULONG InAddrErrors;
	ULONG ForwDatagrams;
	ULONG InUnknownProtos;
	ULONG InDiscards;
	ULONG InDelivers;
	ULONG OutRequests;
	ULONG RoutingDiscards;
	ULONG OutDiscards;
	ULONG OutNoRoutes;
	ULONG ReasmTimeout;
	ULONG ReasmReqds;
	ULONG ReasmOks;
	ULONG ReasmFails;
	ULONG FragOks;
	ULONG FragFails;
	ULONG FragCreates;
	ULONG NumIf;
	ULONG NumAddr;
	ULONG NumRoutes;
} IPSNMP_INFO, *PIPSNMP_INFO;

typedef struct IPADDR_ENTRY {
	ULONG  Addr;
	ULONG  Index;
	ULONG  Mask;
	ULONG  BcastAddr;
	ULONG  ReasmSize;
	USHORT Context;
	USHORT Pad;
} IPADDR_ENTRY, *PIPADDR_ENTRY;

#define ARP_ENTRY_STATIC 4
#define ARP_ENTRY_DYNAMIC 3
#define ARP_ENTRY_INVALID 2
#define ARP_ENTRY_OTHER 1

typedef struct IPARP_ENTRY {
    ULONG Index;
    ULONG AddrSize;
    UCHAR PhysAddr[8];
    ULONG LogAddr;
    ULONG Type;
} IPARP_ENTRY, *PIPARP_ENTRY;

typedef struct IPROUTE_ENTRY {
    ULONG Dest;
    ULONG Index;    //matches if_index in IFEntry and iae_index in IPAddrEntry
    ULONG Metric1;
    ULONG Metric2;
    ULONG Metric3;
    ULONG Metric4;
    ULONG Gw;
    ULONG Type;
    ULONG Proto;
    ULONG Age;
    ULONG Mask;
    ULONG Metric5;
    ULONG Info;
} IPROUTE_ENTRY, *PIPROUTE_ENTRY;

typedef struct IFENTRY {
    ULONG Index;
    ULONG Type;
    ULONG Mtu;
    ULONG Speed;
    ULONG PhysAddrLen;
    UCHAR PhysAddr[MAX_PHYSADDR_LEN];
    ULONG AdminStatus;
    ULONG OperStatus;
    ULONG LastChange;
    ULONG InOctets;
    ULONG InUcastPackets;
    ULONG InNUcastPackets;
    ULONG InDiscards;
    ULONG InErrors;
    ULONG InUnknownProtos;
    ULONG OutOctets;
    ULONG OutUcastPackets;
    ULONG OutNUcastPackets;
    ULONG OutDiscards;
    ULONG OutErrors;
    ULONG OutQLen;
    ULONG DescrLen;
} IFENTRY, *PIFENTRY;

#define	IP_MIB_STATS_ID           1
#define IF_MIB_STATS_ID           1

#ifndef IP_MIB_ROUTETABLE_ENTRY_ID
#define IP_MIB_ROUTETABLE_ENTRY_ID 0x101
#endif
#ifndef IP_MIB_ADDRTABLE_ENTRY_ID
#define	IP_MIB_ADDRTABLE_ENTRY_ID 0x102
#endif
#ifndef IP_MIB_ARPTABLE_ENTRY_ID
#define IP_MIB_ARPTABLE_ENTRY_ID 0x101
#endif
#ifndef MAX_PHYSADDR_SIZE
#define	MAX_PHYSADDR_SIZE 8
#endif


/* Only UDP is supported */
#define TDI_SERVICE_FLAGS (TDI_SERVICE_CONNECTIONLESS_MODE | \
                           TDI_SERVICE_BROADCAST_SUPPORTED)

#define TCP_MIB_STAT_ID     1
#define UDP_MIB_STAT_ID     1
#define TCP_MIB_TABLE_ID    0x101
#define UDP_MIB_TABLE_ID    0x101

#define TL_INSTANCE 0


typedef struct ADDRESS_INFO {
    ULONG LocalAddress;
    ULONG LocalPort;
} ADDRESS_INFO, *PADDRESS_INFO;

typedef union TDI_INFO {
    TDI_CONNECTION_INFO ConnInfo;
    TDI_ADDRESS_INFO AddrInfo;
    TDI_PROVIDER_INFO ProviderInfo;
    TDI_PROVIDER_STATISTICS ProviderStats;
} TDI_INFO, *PTDI_INFO;

TDI_STATUS InfoCopyOut( PCHAR DataOut, UINT SizeOut,
			PNDIS_BUFFER ClientBuf, PUINT ClientBufSize );

TDI_STATUS InfoTdiQueryInformationEx(
    PTDI_REQUEST Request,
    TDIObjectID *ID,
    PNDIS_BUFFER Buffer,
    PUINT BufferSize,
    PVOID Context);

TDI_STATUS InfoTdiSetInformationEx(
    PTDI_REQUEST Request,
    TDIObjectID *ID,
    PVOID Buffer,
    UINT BufferSize);

/* Network layer info functions */
TDI_STATUS InfoNetworkLayerTdiQueryEx( UINT InfoClass,
				       UINT InfoType,
				       UINT InfoId,
				       PVOID Context,
				       TDIEntityID *id,
				       PNDIS_BUFFER Buffer,
				       PUINT BufferSize );

TDI_STATUS InfoNetworkLayerTdiSetEx( UINT InfoClass,
				     UINT InfoType,
				     UINT InfoId,
				     PVOID Context,
				     TDIEntityID *id,
				     PCHAR Buffer,
				     UINT BufferSize );

TDI_STATUS InfoTransportLayerTdiQueryEx( UINT InfoClass,
					 UINT InfoType,
					 UINT InfoId,
					 PVOID Context,
					 TDIEntityID *id,
					 PNDIS_BUFFER Buffer,
					 PUINT BufferSize );

TDI_STATUS InfoTransportLayerTdiSetEx( UINT InfoClass,
				       UINT InfoType,
				       UINT InfoId,
				       PVOID Context,
				       TDIEntityID *id,
				       PCHAR Buffer,
				       UINT BufferSize );

TDI_STATUS InfoInterfaceTdiQueryEx( UINT InfoClass,
				    UINT InfoType,
				    UINT InfoId,
				    PVOID Context,
				    TDIEntityID *id,
				    PNDIS_BUFFER Buffer,
				    PUINT BufferSize );

TDI_STATUS InfoInterfaceTdiSetEx( UINT InfoClass,
				  UINT InfoType,
				  UINT InfoId,
				  PVOID Context,
				  TDIEntityID *id,
				  PCHAR Buffer,
				  UINT BufferSize );

/* Insert and remove interface entities */
VOID InsertTDIInterfaceEntity( PIP_INTERFACE Interface );
VOID RemoveTDIInterfaceEntity( PIP_INTERFACE Interface );

#endif /* __INFO_H */

/* EOF */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -