reactos/sdk/include/psdk/tcpioctl.h
Victor Perevertkin dd2ff41dfc [IPHLPAPI] Make icmp functions use IOCTL_ICMP_ECHO_REQUEST from tcpip.sys
This adds missing features like using events and APCs within IcmpSendEcho2
functions and others.
CORE-10742 CORE-14411

Co-authored-by: Tim Crawford <crawfxrd@gmail.com>
2020-04-07 05:32:40 +03:00

181 lines
5 KiB
C

/*
* tcpioctl.h
*
* Set and query ioctl constants for tcpip.sys
*
* Contributors:
* Created by Art Yerkes (ayerkes@speakeasy.net) from
* drivers/net/tcpip/include/ticonsts.h
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAIMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef _TCPIOCTL_H
#define _TCPIOCTL_H
#define DD_TCP_DEVICE_NAME L"\\Device\\Tcp"
/* TCP/UDP/RawIP IOCTL code definitions */
#define FSCTL_TCP_BASE FILE_DEVICE_NETWORK
#define _TCP_CTL_CODE(Function, Method, Access) \
CTL_CODE(FSCTL_TCP_BASE, Function, Method, Access)
#define IOCTL_TCP_QUERY_INFORMATION_EX \
_TCP_CTL_CODE(0, METHOD_NEITHER, FILE_ANY_ACCESS)
#define IOCTL_TCP_SET_INFORMATION_EX \
_TCP_CTL_CODE(1, METHOD_BUFFERED, FILE_WRITE_ACCESS)
#define IOCTL_QUERY_IP_HW_ADDRESS \
_TCP_CTL_CODE(15, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SET_IP_ADDRESS \
_TCP_CTL_CODE(14, METHOD_BUFFERED, FILE_WRITE_ACCESS)
#define IOCTL_DELETE_IP_ADDRESS \
_TCP_CTL_CODE(16, METHOD_BUFFERED, FILE_WRITE_ACCESS)
#define IOCTL_ICMP_ECHO_REQUEST \
_TCP_CTL_CODE(0, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IF_MIB_STATS_ID 1
#define IP_MIB_STATS_ID 1
#define IP_MIB_ARPTABLE_ENTRY_ID 0x101
#define IP_MIB_ADDRTABLE_ENTRY_ID 0x102
#define IP_INTFC_INFO_ID 0x103
/* Non public TOIID used to query modules info */
#ifdef __REACTOS__
#define IP_SPECIFIC_MODULE_ENTRY_ID 0x110
#endif
#define MAX_PHYSADDR_SIZE 8
/* Address Object Options */
#define AO_OPTION_TTL 1
#define AO_OPTION_MCASTTTL 2
#define AO_OPTION_MCASTIF 3
#define AO_OPTION_XSUM 4
#define AO_OPTION_IPOPTIONS 5
#define AO_OPTION_ADD_MCAST 6
#define AO_OPTION_DEL_MCAST 7
#define AO_OPTION_TOS 8
#define AO_OPTION_IP_DONTFRAGMENT 9
#define AO_OPTION_MCASTLOOP 10
#define AO_OPTION_BROADCAST 11
#define AO_OPTION_IP_HDRINCL 12
#define AO_OPTION_RCVALL 13
#define AO_OPTION_RCVALL_MCAST 14
#define AO_OPTION_RCVALL_IGMPMCAST 15
#define AO_OPTION_UNNUMBEREDIF 16
#define AO_OPTION_IP_UCASTIF 17
#define AO_OPTION_ABSORB_RTRALERT 18
#define AO_OPTION_LIMIT_BCASTS 19
#define AO_OPTION_INDEX_BIND 20
#define AO_OPTION_INDEX_MCASTIF 21
#define AO_OPTION_INDEX_ADD_MCAST 22
#define AO_OPTION_INDEX_DEL_MCAST 23
#define AO_OPTION_IFLIST 24
#define AO_OPTION_ADD_IFLIST 25
#define AO_OPTION_DEL_IFLIST 26
#define AO_OPTION_IP_PKTINFO 27
#define AO_OPTION_ADD_MCAST_SRC 28
#define AO_OPTION_DEL_MCAST_SRC 29
#define AO_OPTION_MCAST_FILTER 30
#define AO_OPTION_BLOCK_MCAST_SRC 31
#define AO_OPTION_UNBLOCK_MCAST_SRC 32
#define AO_OPTION_UDP_CKSUM_COVER 33
#define AO_OPTION_WINDOW 34
#define AO_OPTION_SCALE_CWIN 35
#define AO_OPTION_RCV_HOPLIMIT 36
#define AO_OPTION_UNBIND 37
#define AO_OPTION_PROTECT 38
/* TCP connection options */
#define TCP_SOCKET_NODELAY 1
typedef struct IFEntry
{
ULONG if_index;
ULONG if_type;
ULONG if_mtu;
ULONG if_speed;
ULONG if_physaddrlen;
UCHAR if_physaddr[MAX_PHYSADDR_SIZE];
ULONG if_adminstatus;
ULONG if_operstatus;
ULONG if_lastchange;
ULONG if_inoctets;
ULONG if_inucastpkts;
ULONG if_innucastpkts;
ULONG if_indiscards;
ULONG if_inerrors;
ULONG if_inunknownprotos;
ULONG if_outoctets;
ULONG if_outucastpkts;
ULONG if_outnucastpkts;
ULONG if_outdiscards;
ULONG if_outerrors;
ULONG if_outqlen;
ULONG if_descrlen;
UCHAR if_descr[1];
} IFEntry;
typedef struct IPSNMPInfo
{
ULONG ipsi_forwarding;
ULONG ipsi_defaultttl;
ULONG ipsi_inreceives;
ULONG ipsi_inhdrerrors;
ULONG ipsi_inaddrerrors;
ULONG ipsi_forwdatagrams;
ULONG ipsi_inunknownprotos;
ULONG ipsi_indiscards;
ULONG ipsi_indelivers;
ULONG ipsi_outrequests;
ULONG ipsi_routingdiscards;
ULONG ipsi_outdiscards;
ULONG ipsi_outnoroutes;
ULONG ipsi_reasmtimeout;
ULONG ipsi_reasmreqds;
ULONG ipsi_reasmoks;
ULONG ipsi_reasmfails;
ULONG ipsi_fragoks;
ULONG ipsi_fragfails;
ULONG ipsi_fragcreates;
ULONG ipsi_numif;
ULONG ipsi_numaddr;
ULONG ipsi_numroutes;
} IPSNMPInfo;
typedef struct IPAddrEntry
{
ULONG iae_addr;
ULONG iae_index;
ULONG iae_mask;
ULONG iae_bcastaddr;
ULONG iae_reasmsize;
USHORT iae_context;
USHORT iae_pad;
} IPAddrEntry;
typedef struct IPInterfaceInfo
{
ULONG iii_flags;
ULONG iii_mtu;
ULONG iii_speed;
ULONG iii_addrlength;
UCHAR iii_addr[1];
} IPInterfaceInfo;
#endif/*_TCPIOCTL_H*/