| /* wscontrol.h | |
| * | |
| * This header file includes #defines, structure and type definitions, | |
| * and function declarations that support the implementation of the | |
| * (undocumented) Winsock 1 call WsControl. | |
| * | |
| * The functionality of WsControl was created by observing its behaviour | |
| * in Windows 98, so there are likely to be bugs with the assumptions | |
| * that were made. A significant amount of help came from | |
| * http://tangentsoft.net/wskfaq/articles/wscontrol.html , especially the | |
| * trace by Thomas Divine (www.pcausa.net). | |
| * | |
| * Copyright 2000 James Hatheway | |
| * Copyright 2003 Juan Lang | |
| * | |
| * This library is free software; you can redistribute it and/or | |
| * modify it under the terms of the GNU Lesser General Public | |
| * License as published by the Free Software Foundation; either | |
| * version 2.1 of the License, or (at your option) any later version. | |
| * | |
| * This library is distributed in the hope that it will be useful, | |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| * Lesser General Public License for more details. | |
| * | |
| * You should have received a copy of the GNU Lesser General Public | |
| * License along with this library; if not, write to the Free Software | |
| * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| */ | |
| #ifndef WSCONTROL_H_INCLUDED | |
| #define WSCONTROL_H_INCLUDED | |
| #define WSCTL_SUCCESS 0 | |
| /* | |
| * TCP/IP action codes. | |
| */ | |
| #define WSCNTL_TCPIP_QUERY_INFO 0x00000000 | |
| #define WSCNTL_TCPIP_SET_INFO 0x00000001 | |
| #define WSCNTL_TCPIP_ICMP_ECHO 0x00000002 | |
| #define WSCNTL_TCPIP_TEST 0x00000003 | |
| /* Structure of an entity ID */ | |
| typedef struct TDIEntityID | |
| { | |
| unsigned long tei_entity; | |
| unsigned long tei_instance; | |
| } TDIEntityID; | |
| /* Structure of an object ID */ | |
| typedef struct TDIObjectID | |
| { | |
| TDIEntityID toi_entity; | |
| unsigned long toi_class; | |
| unsigned long toi_type; | |
| unsigned long toi_id; | |
| } TDIObjectID; | |
| /* FIXME: real name and definition of this struct that contains | |
| * an IP route table entry is unknown */ | |
| typedef struct IPRouteEntry { | |
| unsigned long ire_addr; | |
| unsigned long ire_index; /*matches interface index used by iphlpapi */ | |
| unsigned long ire_metric; | |
| unsigned long ire_option4; | |
| unsigned long ire_option5; | |
| unsigned long ire_option6; | |
| unsigned long ire_gw; | |
| unsigned long ire_option8; | |
| unsigned long ire_option9; | |
| unsigned long ire_option10; | |
| unsigned long ire_mask; | |
| unsigned long ire_option12; | |
| } IPRouteEntry; | |
| /* Constants for use in the toi_id field */ | |
| #define ENTITY_LIST_ID 0 /* to get the list of entity IDs */ | |
| #define ENTITY_TYPE_ID 1 /* it's an interface; what type of interface is it? */ | |
| #define IP_MIB_TABLE_ENTRY_ID 0x101 /* not real name */ | |
| #define IP_MIB_ADDRTABLE_ENTRY_ID 0x102 | |
| /* Constants for use in the toi_class field */ | |
| #define INFO_CLASS_GENERIC 0x100 | |
| #define INFO_CLASS_PROTOCOL 0x200 | |
| /* Constants for use in the toi_type field */ | |
| #define INFO_TYPE_PROVIDER 0x100 | |
| /* Interface types. The first one can be returned in the entity ID list--it's | |
| * an interface, and it can be further queried for what type of interface it is. | |
| */ | |
| #define IF_GENERIC 0x200 /* generic interface */ | |
| #define IF_MIB 0x202 /* supports MIB-2 interface */ | |
| /* address translation types. The first can be turned in the entity ID list-- | |
| * it supports address translation of some type, and it can be further queried | |
| * for what type of address translation it supports (I think). | |
| */ | |
| #define AT_ENTITY 0x280 | |
| #define AT_ARP 0x280 | |
| #define AT_NULL 0x282 /* doesn't do address translation after all (liar) */ | |
| /* network layer service providers. The first one can be returned in the | |
| * entity list ID--it supports a network layer (datagram) service, and it can | |
| * be further queried for what type of network layer service it provides. | |
| */ | |
| #define CL_NL_ENTITY 0x301 | |
| #define CL_NL_IPX 0x301 /* implements IPX--probably won't see this, since | |
| * we're querying the TCP protocol */ | |
| #define CL_NL_IP 0x303 /* implements IP */ | |
| /* echo request/response types. The first can be returned in the entity ID | |
| * list--it can be further queried for what type of echo it supports (I think). | |
| */ | |
| #define ER_ENTITY 0x380 | |
| #define ER_ICMP 0x380 | |
| /* connection-oriented transport layer protocols--you know the drill by now */ | |
| #define CO_TL_ENTITY 0x400 | |
| #define CO_TL_NBF 0x400 | |
| #define CO_TL_SPX 0x402 | |
| #define CO_TL_TCP 0x404 | |
| #define CO_TL_SPP 0x406 | |
| /* connectionless transport layer protocols--you know the drill by now */ | |
| #define CL_TL_ENTITY 0x401 | |
| #define CL_TL_NBF 0x401 | |
| #define CL_TL_UDP 0x403 | |
| #endif /* WSCONTROL_H_INCLUDED */ |