xref: /reactos/sdk/include/psdk/tcpioctl.h (revision 02e84521)
1 /*
2  * tcpioctl.h
3  *
4  * Set and query ioctl constants for tcpip.sys
5  *
6  * Contributors:
7  *   Created by Art Yerkes (ayerkes@speakeasy.net) from
8  *    drivers/net/tcpip/include/ticonsts.h
9  *
10  * THIS SOFTWARE IS NOT COPYRIGHTED
11  *
12  * This source code is offered for use in the public domain. You may
13  * use, modify or distribute it freely.
14  *
15  * This code is distributed in the hope that it will be useful but
16  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
17  * DISCLAIMED. This includes but is not limited to warranties of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
19  *
20  */
21 
22 #ifndef _TCPIOCTL_H
23 #define _TCPIOCTL_H
24 
25 #define DD_TCP_DEVICE_NAME L"\\Device\\Tcp"
26 
27 /* TCP/UDP/RawIP IOCTL code definitions */
28 
29 #define FSCTL_TCP_BASE     FILE_DEVICE_NETWORK
30 
31 #define _TCP_CTL_CODE(Function, Method, Access) \
32     CTL_CODE(FSCTL_TCP_BASE, Function, Method, Access)
33 
34 #define IOCTL_TCP_QUERY_INFORMATION_EX \
35     _TCP_CTL_CODE(0, METHOD_NEITHER, FILE_ANY_ACCESS)
36 
37 #define IOCTL_TCP_SET_INFORMATION_EX \
38     _TCP_CTL_CODE(1, METHOD_BUFFERED, FILE_WRITE_ACCESS)
39 
40 #define IOCTL_QUERY_IP_HW_ADDRESS \
41     _TCP_CTL_CODE(15, METHOD_BUFFERED, FILE_ANY_ACCESS)
42 
43 #define IOCTL_SET_IP_ADDRESS \
44     _TCP_CTL_CODE(14, METHOD_BUFFERED, FILE_WRITE_ACCESS)
45 
46 #define IOCTL_DELETE_IP_ADDRESS \
47     _TCP_CTL_CODE(16, METHOD_BUFFERED, FILE_WRITE_ACCESS)
48 
49 #define IF_MIB_STATS_ID                 1
50 #define IP_MIB_STATS_ID                 1
51 #define IP_MIB_ARPTABLE_ENTRY_ID        0x101
52 #define IP_MIB_ADDRTABLE_ENTRY_ID       0x102
53 #define IP_INTFC_INFO_ID                0x103
54 /* Non public TOIID used to query modules info */
55 #ifdef __REACTOS__
56 #define IP_SPECIFIC_MODULE_ENTRY_ID     0x110
57 #endif
58 #define MAX_PHYSADDR_SIZE               8
59 
60 /* Address Object Options */
61 #define AO_OPTION_TTL                1
62 #define AO_OPTION_MCASTTTL           2
63 #define AO_OPTION_MCASTIF            3
64 #define AO_OPTION_XSUM               4
65 #define AO_OPTION_IPOPTIONS          5
66 #define AO_OPTION_ADD_MCAST          6
67 #define AO_OPTION_DEL_MCAST          7
68 #define AO_OPTION_TOS                8
69 #define AO_OPTION_IP_DONTFRAGMENT    9
70 #define AO_OPTION_MCASTLOOP         10
71 #define AO_OPTION_BROADCAST         11
72 #define AO_OPTION_IP_HDRINCL        12
73 #define AO_OPTION_RCVALL            13
74 #define AO_OPTION_RCVALL_MCAST      14
75 #define AO_OPTION_RCVALL_IGMPMCAST  15
76 #define AO_OPTION_UNNUMBEREDIF      16
77 #define AO_OPTION_IP_UCASTIF        17
78 #define AO_OPTION_ABSORB_RTRALERT   18
79 #define AO_OPTION_LIMIT_BCASTS      19
80 #define AO_OPTION_INDEX_BIND        20
81 #define AO_OPTION_INDEX_MCASTIF     21
82 #define AO_OPTION_INDEX_ADD_MCAST   22
83 #define AO_OPTION_INDEX_DEL_MCAST   23
84 #define AO_OPTION_IFLIST            24
85 #define AO_OPTION_ADD_IFLIST        25
86 #define AO_OPTION_DEL_IFLIST        26
87 #define AO_OPTION_IP_PKTINFO        27
88 #define AO_OPTION_ADD_MCAST_SRC     28
89 #define AO_OPTION_DEL_MCAST_SRC     29
90 #define AO_OPTION_MCAST_FILTER      30
91 #define AO_OPTION_BLOCK_MCAST_SRC   31
92 #define AO_OPTION_UNBLOCK_MCAST_SRC 32
93 #define AO_OPTION_UDP_CKSUM_COVER   33
94 #define AO_OPTION_WINDOW            34
95 #define AO_OPTION_SCALE_CWIN        35
96 #define AO_OPTION_RCV_HOPLIMIT      36
97 #define AO_OPTION_UNBIND            37
98 #define AO_OPTION_PROTECT           38
99 
100 /* TCP connection options */
101 #define TCP_SOCKET_NODELAY 1
102 
103 typedef struct IFEntry
104 {
105     ULONG if_index;
106     ULONG if_type;
107     ULONG if_mtu;
108     ULONG if_speed;
109     ULONG if_physaddrlen;
110     UCHAR if_physaddr[MAX_PHYSADDR_SIZE];
111     ULONG if_adminstatus;
112     ULONG if_operstatus;
113     ULONG if_lastchange;
114     ULONG if_inoctets;
115     ULONG if_inucastpkts;
116     ULONG if_innucastpkts;
117     ULONG if_indiscards;
118     ULONG if_inerrors;
119     ULONG if_inunknownprotos;
120     ULONG if_outoctets;
121     ULONG if_outucastpkts;
122     ULONG if_outnucastpkts;
123     ULONG if_outdiscards;
124     ULONG if_outerrors;
125     ULONG if_outqlen;
126     ULONG if_descrlen;
127     UCHAR if_descr[1];
128 } IFEntry;
129 
130 typedef struct IPSNMPInfo
131 {
132     ULONG ipsi_forwarding;
133     ULONG ipsi_defaultttl;
134     ULONG ipsi_inreceives;
135     ULONG ipsi_inhdrerrors;
136     ULONG ipsi_inaddrerrors;
137     ULONG ipsi_forwdatagrams;
138     ULONG ipsi_inunknownprotos;
139     ULONG ipsi_indiscards;
140     ULONG ipsi_indelivers;
141     ULONG ipsi_outrequests;
142     ULONG ipsi_routingdiscards;
143     ULONG ipsi_outdiscards;
144     ULONG ipsi_outnoroutes;
145     ULONG ipsi_reasmtimeout;
146     ULONG ipsi_reasmreqds;
147     ULONG ipsi_reasmoks;
148     ULONG ipsi_reasmfails;
149     ULONG ipsi_fragoks;
150     ULONG ipsi_fragfails;
151     ULONG ipsi_fragcreates;
152     ULONG ipsi_numif;
153     ULONG ipsi_numaddr;
154     ULONG ipsi_numroutes;
155 } IPSNMPInfo;
156 
157 typedef struct IPAddrEntry
158 {
159     ULONG iae_addr;
160     ULONG iae_index;
161     ULONG iae_mask;
162     ULONG iae_bcastaddr;
163     ULONG iae_reasmsize;
164     USHORT iae_context;
165     USHORT iae_pad;
166 } IPAddrEntry;
167 
168 typedef struct IPInterfaceInfo
169 {
170     ULONG iii_flags;
171     ULONG iii_mtu;
172     ULONG iii_speed;
173     ULONG iii_addrlength;
174     UCHAR iii_addr[1];
175 } IPInterfaceInfo;
176 
177 #endif/*_TCPIOCTL_H*/
178