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 IOCTL_ICMP_ECHO_REQUEST \ 50 _TCP_CTL_CODE(0, METHOD_BUFFERED, FILE_ANY_ACCESS) 51 52 #define IF_MIB_STATS_ID 1 53 #define IP_MIB_STATS_ID 1 54 #define IP_MIB_ARPTABLE_ENTRY_ID 0x101 55 #define IP_MIB_ADDRTABLE_ENTRY_ID 0x102 56 #define IP_INTFC_INFO_ID 0x103 57 /* Non public TOIID used to query modules info */ 58 #ifdef __REACTOS__ 59 #define IP_SPECIFIC_MODULE_ENTRY_ID 0x110 60 #endif 61 #define MAX_PHYSADDR_SIZE 8 62 63 /* Address Object Options */ 64 #define AO_OPTION_TTL 1 65 #define AO_OPTION_MCASTTTL 2 66 #define AO_OPTION_MCASTIF 3 67 #define AO_OPTION_XSUM 4 68 #define AO_OPTION_IPOPTIONS 5 69 #define AO_OPTION_ADD_MCAST 6 70 #define AO_OPTION_DEL_MCAST 7 71 #define AO_OPTION_TOS 8 72 #define AO_OPTION_IP_DONTFRAGMENT 9 73 #define AO_OPTION_MCASTLOOP 10 74 #define AO_OPTION_BROADCAST 11 75 #define AO_OPTION_IP_HDRINCL 12 76 #define AO_OPTION_RCVALL 13 77 #define AO_OPTION_RCVALL_MCAST 14 78 #define AO_OPTION_RCVALL_IGMPMCAST 15 79 #define AO_OPTION_UNNUMBEREDIF 16 80 #define AO_OPTION_IP_UCASTIF 17 81 #define AO_OPTION_ABSORB_RTRALERT 18 82 #define AO_OPTION_LIMIT_BCASTS 19 83 #define AO_OPTION_INDEX_BIND 20 84 #define AO_OPTION_INDEX_MCASTIF 21 85 #define AO_OPTION_INDEX_ADD_MCAST 22 86 #define AO_OPTION_INDEX_DEL_MCAST 23 87 #define AO_OPTION_IFLIST 24 88 #define AO_OPTION_ADD_IFLIST 25 89 #define AO_OPTION_DEL_IFLIST 26 90 #define AO_OPTION_IP_PKTINFO 27 91 #define AO_OPTION_ADD_MCAST_SRC 28 92 #define AO_OPTION_DEL_MCAST_SRC 29 93 #define AO_OPTION_MCAST_FILTER 30 94 #define AO_OPTION_BLOCK_MCAST_SRC 31 95 #define AO_OPTION_UNBLOCK_MCAST_SRC 32 96 #define AO_OPTION_UDP_CKSUM_COVER 33 97 #define AO_OPTION_WINDOW 34 98 #define AO_OPTION_SCALE_CWIN 35 99 #define AO_OPTION_RCV_HOPLIMIT 36 100 #define AO_OPTION_UNBIND 37 101 #define AO_OPTION_PROTECT 38 102 103 /* TCP connection options */ 104 #define TCP_SOCKET_NODELAY 1 105 106 typedef struct IFEntry 107 { 108 ULONG if_index; 109 ULONG if_type; 110 ULONG if_mtu; 111 ULONG if_speed; 112 ULONG if_physaddrlen; 113 UCHAR if_physaddr[MAX_PHYSADDR_SIZE]; 114 ULONG if_adminstatus; 115 ULONG if_operstatus; 116 ULONG if_lastchange; 117 ULONG if_inoctets; 118 ULONG if_inucastpkts; 119 ULONG if_innucastpkts; 120 ULONG if_indiscards; 121 ULONG if_inerrors; 122 ULONG if_inunknownprotos; 123 ULONG if_outoctets; 124 ULONG if_outucastpkts; 125 ULONG if_outnucastpkts; 126 ULONG if_outdiscards; 127 ULONG if_outerrors; 128 ULONG if_outqlen; 129 ULONG if_descrlen; 130 UCHAR if_descr[1]; 131 } IFEntry; 132 133 typedef struct IPSNMPInfo 134 { 135 ULONG ipsi_forwarding; 136 ULONG ipsi_defaultttl; 137 ULONG ipsi_inreceives; 138 ULONG ipsi_inhdrerrors; 139 ULONG ipsi_inaddrerrors; 140 ULONG ipsi_forwdatagrams; 141 ULONG ipsi_inunknownprotos; 142 ULONG ipsi_indiscards; 143 ULONG ipsi_indelivers; 144 ULONG ipsi_outrequests; 145 ULONG ipsi_routingdiscards; 146 ULONG ipsi_outdiscards; 147 ULONG ipsi_outnoroutes; 148 ULONG ipsi_reasmtimeout; 149 ULONG ipsi_reasmreqds; 150 ULONG ipsi_reasmoks; 151 ULONG ipsi_reasmfails; 152 ULONG ipsi_fragoks; 153 ULONG ipsi_fragfails; 154 ULONG ipsi_fragcreates; 155 ULONG ipsi_numif; 156 ULONG ipsi_numaddr; 157 ULONG ipsi_numroutes; 158 } IPSNMPInfo; 159 160 typedef struct IPAddrEntry 161 { 162 ULONG iae_addr; 163 ULONG iae_index; 164 ULONG iae_mask; 165 ULONG iae_bcastaddr; 166 ULONG iae_reasmsize; 167 USHORT iae_context; 168 USHORT iae_pad; 169 } IPAddrEntry; 170 171 typedef struct IPInterfaceInfo 172 { 173 ULONG iii_flags; 174 ULONG iii_mtu; 175 ULONG iii_speed; 176 ULONG iii_addrlength; 177 UCHAR iii_addr[1]; 178 } IPInterfaceInfo; 179 180 #endif/*_TCPIOCTL_H*/ 181