432d9536384de63400e0e5c01a254c7d9b113d81
[reactos.git] / reactos / drivers / network / tcpip / include / info.h
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS TCP/IP protocol driver
4 * FILE: include/info.h
5 * PURPOSE: TdiQueryInformation definitions
6 */
7 #ifndef __INFO_H
8 #define __INFO_H
9
10 #include <tcpioctl.h>
11
12 #define MAX_PHYSADDR_LEN 8
13 #define MAX_IFDESCR_LEN 256
14
15 typedef struct IPSNMP_INFO {
16 ULONG Forwarding;
17 ULONG DefaultTTL;
18 ULONG InReceives;
19 ULONG InHdrErrors;
20 ULONG InAddrErrors;
21 ULONG ForwDatagrams;
22 ULONG InUnknownProtos;
23 ULONG InDiscards;
24 ULONG InDelivers;
25 ULONG OutRequests;
26 ULONG RoutingDiscards;
27 ULONG OutDiscards;
28 ULONG OutNoRoutes;
29 ULONG ReasmTimeout;
30 ULONG ReasmReqds;
31 ULONG ReasmOks;
32 ULONG ReasmFails;
33 ULONG FragOks;
34 ULONG FragFails;
35 ULONG FragCreates;
36 ULONG NumIf;
37 ULONG NumAddr;
38 ULONG NumRoutes;
39 } IPSNMP_INFO, *PIPSNMP_INFO;
40
41 typedef struct IPADDR_ENTRY {
42 ULONG Addr;
43 ULONG Index;
44 ULONG Mask;
45 ULONG BcastAddr;
46 ULONG ReasmSize;
47 USHORT Context;
48 USHORT Pad;
49 } IPADDR_ENTRY, *PIPADDR_ENTRY;
50
51 #define ARP_ENTRY_STATIC 4
52 #define ARP_ENTRY_DYNAMIC 3
53 #define ARP_ENTRY_INVALID 2
54 #define ARP_ENTRY_OTHER 1
55
56 typedef struct IPARP_ENTRY {
57 ULONG Index;
58 ULONG AddrSize;
59 UCHAR PhysAddr[8];
60 ULONG LogAddr;
61 ULONG Type;
62 } IPARP_ENTRY, *PIPARP_ENTRY;
63
64 typedef struct IPROUTE_ENTRY {
65 ULONG Dest;
66 ULONG Index; //matches if_index in IFEntry and iae_index in IPAddrEntry
67 ULONG Metric1;
68 ULONG Metric2;
69 ULONG Metric3;
70 ULONG Metric4;
71 ULONG Gw;
72 ULONG Type;
73 ULONG Proto;
74 ULONG Age;
75 ULONG Mask;
76 ULONG Metric5;
77 ULONG Info;
78 } IPROUTE_ENTRY, *PIPROUTE_ENTRY;
79
80 typedef struct IFENTRY {
81 ULONG Index;
82 ULONG Type;
83 ULONG Mtu;
84 ULONG Speed;
85 ULONG PhysAddrLen;
86 UCHAR PhysAddr[MAX_PHYSADDR_LEN];
87 ULONG AdminStatus;
88 ULONG OperStatus;
89 ULONG LastChange;
90 ULONG InOctets;
91 ULONG InUcastPackets;
92 ULONG InNUcastPackets;
93 ULONG InDiscards;
94 ULONG InErrors;
95 ULONG InUnknownProtos;
96 ULONG OutOctets;
97 ULONG OutUcastPackets;
98 ULONG OutNUcastPackets;
99 ULONG OutDiscards;
100 ULONG OutErrors;
101 ULONG OutQLen;
102 ULONG DescrLen;
103 } IFENTRY, *PIFENTRY;
104
105 /* Only UDP is supported */
106 #define TDI_SERVICE_FLAGS (TDI_SERVICE_CONNECTIONLESS_MODE | \
107 TDI_SERVICE_BROADCAST_SUPPORTED)
108
109 #define TCP_MIB_STAT_ID 1
110 #define UDP_MIB_STAT_ID 1
111 #define TCP_MIB_TABLE_ID 0x101
112 #define UDP_MIB_TABLE_ID 0x101
113
114 #define TL_INSTANCE 0
115
116
117 typedef struct ADDRESS_INFO {
118 ULONG LocalAddress;
119 ULONG LocalPort;
120 } ADDRESS_INFO, *PADDRESS_INFO;
121
122 typedef union TDI_INFO {
123 TDI_CONNECTION_INFO ConnInfo;
124 TDI_ADDRESS_INFO AddrInfo;
125 TDI_PROVIDER_INFO ProviderInfo;
126 TDI_PROVIDER_STATISTICS ProviderStats;
127 } TDI_INFO, *PTDI_INFO;
128
129 TDI_STATUS InfoCopyOut( PCHAR DataOut, UINT SizeOut,
130 PNDIS_BUFFER ClientBuf, PUINT ClientBufSize );
131
132 TDI_STATUS InfoTdiQueryInformationEx(
133 PTDI_REQUEST Request,
134 TDIObjectID *ID,
135 PNDIS_BUFFER Buffer,
136 PUINT BufferSize,
137 PVOID Context);
138
139 TDI_STATUS InfoTdiSetInformationEx(
140 PTDI_REQUEST Request,
141 TDIObjectID *ID,
142 PVOID Buffer,
143 UINT BufferSize);
144
145 TDI_STATUS InfoTdiQueryGetAddrTable(TDIEntityID ID,
146 PNDIS_BUFFER Buffer,
147 PUINT BufferSize);
148
149 TDI_STATUS InfoTdiQueryGetInterfaceMIB(TDIEntityID ID,
150 PIP_INTERFACE Interface,
151 PNDIS_BUFFER Buffer,
152 PUINT BufferSize);
153
154 TDI_STATUS InfoTdiQueryGetIPSnmpInfo( TDIEntityID ID,
155 PNDIS_BUFFER Buffer,
156 PUINT BufferSize );
157
158 TDI_STATUS InfoTdiQueryGetRouteTable( PNDIS_BUFFER Buffer,
159 PUINT BufferSize );
160
161 TDI_STATUS InfoTdiSetRoute(PIPROUTE_ENTRY Route);
162
163 TDI_STATUS InfoTdiQueryGetArptableMIB(TDIEntityID ID,
164 PIP_INTERFACE Interface,
165 PNDIS_BUFFER Buffer,
166 PUINT BufferSize);
167
168 /* Insert and remove interface entities */
169 VOID InsertTDIInterfaceEntity( PIP_INTERFACE Interface );
170 VOID RemoveTDIInterfaceEntity( PIP_INTERFACE Interface );
171
172 #endif /* __INFO_H */
173
174 /* EOF */