-
-
Save sgeto/e8d128ebc5ae48ef4a148cbb603b9647 to your computer and use it in GitHub Desktop.
Win32-only functions to return extended information for network adapters. Used with "windump -Dv"
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* | |
| * Winpcap stuff for Win32 only: | |
| * | |
| * 1) Simple trace function used by WINDUMP_TRACE() macro in netdissect.h. | |
| * 2) Colourised 'ndo_printer'. | |
| * 3) Low-level NDIS/Packet32 stuff that doesn't fit anywhere else. | |
| * | |
| * Written by G. Vanem <[email protected]> 2014. | |
| */ | |
| #ifdef HAVE_CONFIG_H | |
| #include "config.h" | |
| #endif | |
| #define __WINDOT11_H__ /* Do not pull in <windot11.h> */ | |
| #include <stdio.h> | |
| #include <stdlib.h> | |
| #include <stdarg.h> | |
| #include <assert.h> | |
| #include <winsock2.h> | |
| #if defined(__MINGW64_VERSION_MAJOR) && (_WIN32_WINNT >= 0x0601) && !defined(__DPAPI_H__) | |
| #include <dpapi.h> /* This seems to be missing and required for >= _WIN32_WINNT >= 0x0601 on MinGW64 and TDM-gcc */ | |
| #endif | |
| #include <iphlpapi.h> | |
| #include <pcap.h> | |
| #include <Packet32.h> | |
| #include <Packet32-Int.h> | |
| #include <netdissect-stdinc.h> | |
| #include "netdissect.h" | |
| #include "addrtoname.h" | |
| #include "addrtostr.h" | |
| #include "interface.h" | |
| #ifdef HAVE_AIRPCAP_API | |
| #include <airpcap.h> | |
| #include <../src/airpcap-int.h> /* For 'AirpcapHandle::OsHandle' */ | |
| #define AirpcapHandle struct _AirpcapHandle | |
| #endif | |
| #if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0601) | |
| #define ON_WIN_VISTA | |
| #endif | |
| #define DIM(x) ( sizeof(x) / sizeof((x)[0]) ) | |
| #define NONE_STR "<None>" | |
| typedef char address_buf [INET6_ADDRSTRLEN+1]; | |
| static char work_buf [500]; | |
| PCAP_API_DEF ADAPTER *pcap_get_adapter (pcap_t *p); | |
| static void show_link_details (netdissect_options *ndo, const char *device); | |
| static void show_description (netdissect_options *ndo, const IP_ADAPTER_ADDRESSES *iface, pcap_if_t *dev); | |
| static void supported_OID_list (ADAPTER *adapter, HANDLE air_hnd); | |
| #if defined(__MINGW64_VERSION_MAJOR) | |
| /* | |
| * The MingW/MingW64 .h-file layout doesn't agree. | |
| */ | |
| #include <ntddndis.h> | |
| #elif defined(__MINGW32__) | |
| #include <ddk/ntddndis.h> | |
| #else | |
| #include <NtddNdis.h> | |
| #endif | |
| /* | |
| * The below 'OID_' hex-values are in the Win-SDK written in upper case. | |
| * In MinGW it's lower-case. Hence turn off the "redefine" warning to | |
| * shut-up a MinGW compilation. | |
| */ | |
| #ifdef DIAG_OFF | |
| DIAG_OFF (macro-redefined) | |
| #endif | |
| #ifdef _MSC_VER | |
| #pragma warning (disable:4005) | |
| #endif | |
| #define OID_GEN_PHYSICAL_MEDIUM 0x00010202 | |
| #define OID_FDDI_LONG_PERMANENT_ADDRESS 0x03010101 | |
| #define OID_802_5_PERMANENT_ADDRESS 0x02010101 | |
| #define OID_WAN_PERMANENT_ADDRESS 0x04010101 | |
| #define OID_WAN_CURRENT_ADDRESS 0x04010102 | |
| #define OID_WW_GEN_PERMANENT_ADDRESS 0x0901010B | |
| #define OID_WW_GEN_CURRENT_ADDRESS 0x0901010C | |
| #define OID_ARCNET_PERMANENT_ADDRESS 0x06010101 | |
| /* 802.3 OIDs */ | |
| #define OID_802_3_PERMANENT_ADDRESS 0x01010101 | |
| #define OID_802_3_CURRENT_ADDRESS 0x01010102 | |
| #define OID_802_3_MULTICAST_LIST 0x01010103 | |
| #define OID_802_3_MAXIMUM_LIST_SIZE 0x01010104 | |
| #define OID_802_3_MAC_OPTIONS 0x01010105 | |
| #define OID_802_3_RCV_ERROR_ALIGNMENT 0x01020101 | |
| #define OID_802_3_XMIT_ONE_COLLISION 0x01020102 | |
| #define OID_802_3_XMIT_MORE_COLLISIONS 0x01020103 | |
| #define OID_802_3_XMIT_DEFERRED 0x01020201 | |
| #define OID_802_3_XMIT_MAX_COLLISIONS 0x01020202 | |
| #define OID_802_3_RCV_OVERRUN 0x01020203 | |
| #define OID_802_3_XMIT_UNDERRUN 0x01020204 | |
| #define OID_802_3_XMIT_HEARTBEAT_FAILURE 0x01020205 | |
| #define OID_802_3_XMIT_TIMES_CRS_LOST 0x01020206 | |
| #define OID_802_3_XMIT_LATE_COLLISIONS 0x01020207 | |
| #define OID_802_3_ADD_MULTICAST_ADDRESS 0x01010208 | |
| #define OID_802_3_DELETE_MULTICAST_ADDRESS 0x01010209 | |
| /* 802.11 OIDs */ | |
| #define OID_802_11_BSSID 0x0d010101 | |
| #define OID_802_11_SSID 0x0d010102 | |
| #define OID_802_11_NETWORK_TYPES_SUPPORTED 0x0d010203 | |
| #define OID_802_11_NETWORK_TYPE_IN_USE 0x0d010204 | |
| #define OID_802_11_TX_POWER_LEVEL 0x0d010205 | |
| #define OID_802_11_RSSI 0x0d010206 | |
| #define OID_802_11_RSSI_TRIGGER 0x0d010207 | |
| #define OID_802_11_INFRASTRUCTURE_MODE 0x0d010108 | |
| #define OID_802_11_FRAGMENTATION_THRESHOLD 0x0d010209 | |
| #define OID_802_11_RTS_THRESHOLD 0x0d01020a | |
| #define OID_802_11_NUMBER_OF_ANTENNAS 0x0d01020b | |
| #define OID_802_11_RX_ANTENNA_SELECTED 0x0d01020c | |
| #define OID_802_11_TX_ANTENNA_SELECTED 0x0d01020d | |
| #define OID_802_11_SUPPORTED_RATES 0x0d01020e | |
| #define OID_802_11_DESIRED_RATES 0x0d010210 | |
| #define OID_802_11_CONFIGURATION 0x0d010211 | |
| #define OID_802_11_STATISTICS 0x0d020212 | |
| #define OID_802_11_ADD_WEP 0x0d010113 | |
| #define OID_802_11_REMOVE_WEP 0x0d010114 | |
| #define OID_802_11_DISASSOCIATE 0x0d010115 | |
| #define OID_802_11_POWER_MODE 0x0d010216 | |
| #define OID_802_11_BSSID_LIST 0x0d010217 | |
| #define OID_802_11_AUTHENTICATION_MODE 0x0d010118 | |
| #define OID_802_11_PRIVACY_FILTER 0x0d010119 | |
| #define OID_802_11_BSSID_LIST_SCAN 0x0d01011a | |
| #define OID_802_11_WEP_STATUS 0x0d01011b | |
| #define OID_802_11_ENCRYPTION_STATUS OID_802_11_WEP_STATUS | |
| #define OID_802_11_RELOAD_DEFAULTS 0x0d01011c | |
| #define OID_802_11_ADD_KEY 0x0d01011d | |
| #define OID_802_11_REMOVE_KEY 0x0d01011e | |
| #define OID_802_11_ASSOCIATION_INFORMATION 0x0d01011f | |
| #define OID_802_11_TEST 0x0d010120 | |
| #define OID_802_11_CAPABILITY 0x0d010122 | |
| #define OID_802_11_PMKID 0x0d010123 | |
| /* PnP and power management OIDs */ | |
| #define OID_PNP_CAPABILITIES 0xfd010100 | |
| #define OID_PNP_SET_POWER 0xfd010101 | |
| #define OID_PNP_QUERY_POWER 0xfd010102 | |
| #define OID_PNP_ADD_WAKE_UP_PATTERN 0xfd010103 | |
| #define OID_PNP_REMOVE_WAKE_UP_PATTERN 0xfd010104 | |
| #define OID_PNP_WAKE_UP_PATTERN_LIST 0xfd010105 | |
| #define OID_PNP_ENABLE_WAKE_UP 0xfd010106 | |
| /* Connection oriented OIDs */ | |
| #define OID_CO_ADD_PVC 0xfe000001 | |
| #define OID_CO_DELETE_PVC 0xfe000002 | |
| #define OID_CO_GET_CALL_INFORMATION 0xfe000003 | |
| #define OID_CO_ADD_ADDRESS 0xfe000004 | |
| #define OID_CO_DELETE_ADDRESS 0xfe000005 | |
| #define OID_CO_GET_ADDRESSES 0xfe000006 | |
| #define OID_CO_ADDRESS_CHANGE 0xfe000007 | |
| #define OID_CO_SIGNALING_ENABLED 0xfe000008 | |
| #define OID_CO_SIGNALING_DISABLED 0xfe000009 | |
| #define OID_CO_AF_CLOSE 0xfe00000a | |
| #define OID_CO_TAPI_CM_CAPS 0xfe001001 | |
| #define OID_CO_TAPI_LINE_CAPS 0xfe001002 | |
| #define OID_CO_TAPI_ADDRESS_CAPS 0xfe001003 | |
| #define OID_CO_TAPI_TRANSLATE_TAPI_CALLPARAMS 0xfe001004 | |
| #define OID_CO_TAPI_TRANSLATE_NDIS_CALLPARAMS 0xfe001005 | |
| #define OID_CO_TAPI_TRANSLATE_TAPI_SAP 0xfe001006 | |
| #define OID_CO_TAPI_GET_CALL_DIAGNOSTICS 0xfe001007 | |
| #define OID_CO_TAPI_REPORT_DIGITS 0xfe001008 | |
| #define OID_CO_TAPI_DONT_REPORT_DIGITS 0xfe001009 | |
| /* 802.5 Objects (Token-Ring) */ | |
| #define OID_802_5_PERMANENT_ADDRESS 0x02010101 | |
| #define OID_802_5_CURRENT_ADDRESS 0x02010102 | |
| #define OID_802_5_CURRENT_FUNCTIONAL 0x02010103 | |
| #define OID_802_5_CURRENT_GROUP 0x02010104 | |
| #define OID_802_5_LAST_OPEN_STATUS 0x02010105 | |
| #define OID_802_5_CURRENT_RING_STATUS 0x02010106 | |
| #define OID_802_5_CURRENT_RING_STATE 0x02010107 | |
| #define OID_802_5_LINE_ERRORS 0x02020101 | |
| #define OID_802_5_LOST_FRAMES 0x02020102 | |
| #define OID_802_5_BURST_ERRORS 0x02020201 | |
| #define OID_802_5_AC_ERRORS 0x02020202 | |
| #define OID_802_5_ABORT_DELIMETERS 0x02020203 | |
| #define OID_802_5_FRAME_COPIED_ERRORS 0x02020204 | |
| #define OID_802_5_FREQUENCY_ERRORS 0x02020205 | |
| #define OID_802_5_TOKEN_ERRORS 0x02020206 | |
| #define OID_802_5_INTERNAL_ERRORS 0x02020207 | |
| /* FDDI Objects */ | |
| #define OID_FDDI_LONG_PERMANENT_ADDR 0x03010101 | |
| #define OID_FDDI_LONG_CURRENT_ADDR 0x03010102 | |
| #define OID_FDDI_LONG_MULTICAST_LIST 0x03010103 | |
| #define OID_FDDI_LONG_MAX_LIST_SIZE 0x03010104 | |
| #define OID_FDDI_SHORT_PERMANENT_ADDR 0x03010105 | |
| #define OID_FDDI_SHORT_CURRENT_ADDR 0x03010106 | |
| #define OID_FDDI_SHORT_MULTICAST_LIST 0x03010107 | |
| #define OID_FDDI_SHORT_MAX_LIST_SIZE 0x03010108 | |
| #define OID_FDDI_ATTACHMENT_TYPE 0x03020101 | |
| #define OID_FDDI_UPSTREAM_NODE_LONG 0x03020102 | |
| #define OID_FDDI_DOWNSTREAM_NODE_LONG 0x03020103 | |
| #define OID_FDDI_FRAME_ERRORS 0x03020104 | |
| #define OID_FDDI_FRAMES_LOST 0x03020105 | |
| #define OID_FDDI_RING_MGT_STATE 0x03020106 | |
| #define OID_FDDI_LCT_FAILURES 0x03020107 | |
| #define OID_FDDI_LEM_REJECTS 0x03020108 | |
| #define OID_FDDI_LCONNECTION_STATE 0x03020109 | |
| #define OID_FDDI_SMT_STATION_ID 0x03030201 | |
| #define OID_FDDI_SMT_OP_VERSION_ID 0x03030202 | |
| #define OID_FDDI_SMT_HI_VERSION_ID 0x03030203 | |
| #define OID_FDDI_SMT_LO_VERSION_ID 0x03030204 | |
| #define OID_FDDI_SMT_MANUFACTURER_DATA 0x03030205 | |
| #define OID_FDDI_SMT_USER_DATA 0x03030206 | |
| #define OID_FDDI_SMT_MIB_VERSION_ID 0x03030207 | |
| #define OID_FDDI_SMT_MAC_CT 0x03030208 | |
| #define OID_FDDI_SMT_NON_MASTER_CT 0x03030209 | |
| #define OID_FDDI_SMT_MASTER_CT 0x0303020a | |
| #define OID_FDDI_SMT_AVAILABLE_PATHS 0x0303020b | |
| #define OID_FDDI_SMT_CONFIG_CAPABILITIES 0x0303020c | |
| #define OID_FDDI_SMT_CONFIG_POLICY 0x0303020d | |
| #define OID_FDDI_SMT_CONNECTION_POLICY 0x0303020e | |
| #define OID_FDDI_SMT_T_NOTIFY 0x0303020f | |
| #define OID_FDDI_SMT_STAT_RPT_POLICY 0x03030210 | |
| #define OID_FDDI_SMT_TRACE_MAX_EXPIRATION 0x03030211 | |
| #define OID_FDDI_SMT_PORT_INDEXES 0x03030212 | |
| #define OID_FDDI_SMT_MAC_INDEXES 0x03030213 | |
| #define OID_FDDI_SMT_BYPASS_PRESENT 0x03030214 | |
| #define OID_FDDI_SMT_ECM_STATE 0x03030215 | |
| #define OID_FDDI_SMT_CF_STATE 0x03030216 | |
| #define OID_FDDI_SMT_HOLD_STATE 0x03030217 | |
| #define OID_FDDI_SMT_REMOTE_DISCONNECT_FLAG 0x03030218 | |
| #define OID_FDDI_SMT_STATION_STATUS 0x03030219 | |
| #define OID_FDDI_SMT_PEER_WRAP_FLAG 0x0303021a | |
| /* LocalTalk objects */ | |
| #define OID_LTALK_CURRENT_NODE_ID 0x05010102 | |
| #define OID_LTALK_IN_BROADCASTS 0x05020101 | |
| #define OID_LTALK_IN_LENGTH_ERRORS 0x05020102 | |
| #define OID_LTALK_OUT_NO_HANDLERS 0x05020201 | |
| #define OID_LTALK_COLLISIONS 0x05020202 | |
| #define OID_LTALK_DEFERS 0x05020203 | |
| #define OID_LTALK_NO_DATA_ERRORS 0x05020204 | |
| #define OID_LTALK_RANDOM_CTS_ERRORS 0x05020205 | |
| #define OID_LTALK_FCS_ERRORS 0x05020206 | |
| /* Arcnet objects */ | |
| #define OID_ARCNET_PERMANENT_ADDRESS 0x06010101 | |
| #define OID_ARCNET_CURRENT_ADDRESS 0x06010102 | |
| #define OID_ARCNET_RECONFIGURATIONS 0x06020201 | |
| /* TAPI objects */ | |
| #define OID_TAPI_ACCEPT 0x07030101 | |
| #define OID_TAPI_ANSWER 0x07030102 | |
| #define OID_TAPI_CLOSE 0x07030103 | |
| #define OID_TAPI_CLOSE_CALL 0x07030104 | |
| #define OID_TAPI_CONDITIONAL_MEDIA_DETECTION 0x07030105 | |
| #define OID_TAPI_CONFIG_DIALOG 0x07030106 | |
| #define OID_TAPI_DEV_SPECIFIC 0x07030107 | |
| #define OID_TAPI_DIAL 0x07030108 | |
| #define OID_TAPI_DROP 0x07030109 | |
| #define OID_TAPI_GET_ADDRESS_CAPS 0x0703010a | |
| #define OID_TAPI_GET_ADDRESS_ID 0x0703010b | |
| #define OID_TAPI_GET_ADDRESS_STATUS 0x0703010c | |
| #define OID_TAPI_GET_CALL_ADDRESS_ID 0x0703010d | |
| #define OID_TAPI_GET_CALL_INFO 0x0703010e | |
| #define OID_TAPI_GET_CALL_STATUS 0x0703010f | |
| #define OID_TAPI_GET_DEV_CAPS 0x07030110 | |
| #define OID_TAPI_GET_DEV_CONFIG 0x07030111 | |
| #define OID_TAPI_GET_EXTENSION_ID 0x07030112 | |
| #define OID_TAPI_GET_ID 0x07030113 | |
| #define OID_TAPI_GET_LINE_DEV_STATUS 0x07030114 | |
| #define OID_TAPI_MAKE_CALL 0x07030115 | |
| #define OID_TAPI_NEGOTIATE_EXT_VERSION 0x07030116 | |
| #define OID_TAPI_OPEN 0x07030117 | |
| #define OID_TAPI_PROVIDER_INITIALIZE 0x07030118 | |
| #define OID_TAPI_PROVIDER_SHUTDOWN 0x07030119 | |
| #define OID_TAPI_SECURE_CALL 0x0703011a | |
| #define OID_TAPI_SELECT_EXT_VERSION 0x0703011b | |
| #define OID_TAPI_SEND_USER_USER_INFO 0x0703011c | |
| #define OID_TAPI_SET_APP_SPECIFIC 0x0703011d | |
| #define OID_TAPI_SET_CALL_PARAMS 0x0703011e | |
| #define OID_TAPI_SET_DEFAULT_MEDIA_DETECTION 0x0703011f | |
| #define OID_TAPI_SET_DEV_CONFIG 0x07030120 | |
| #define OID_TAPI_SET_MEDIA_MODE 0x07030121 | |
| #define OID_TAPI_SET_STATUS_MESSAGES 0x07030122 | |
| #define OID_TAPI_GATHER_DIGITS 0x07030123 | |
| #define OID_TAPI_MONITOR_DIGITS 0x07030124 | |
| /* TCP/IP OIDs */ | |
| #define OID_TCP_TASK_OFFLOAD 0xfc010201 | |
| #define OID_TCP_TASK_IPSEC_ADD_SA 0xfc010202 | |
| #define OID_TCP_TASK_IPSEC_DELETE_SA 0xfc010203 | |
| #define OID_TCP_SAN_SUPPORT 0xfc010204 | |
| #define OID_TCP_TASK_IPSEC_ADD_UDPESP_SA 0xfc010205 | |
| #define OID_TCP_TASK_IPSEC_DELETE_UDPESP_SA 0xfc010206 | |
| #define OID_TCP4_OFFLOAD_STATS 0xfc010207 | |
| #define OID_TCP6_OFFLOAD_STATS 0xfc010208 | |
| #define OID_IP4_OFFLOAD_STATS 0xfc010209 | |
| #define OID_IP6_OFFLOAD_STATS 0xfc01020a | |
| /* | |
| * New offload OIDs for NDIS 6 | |
| */ | |
| #define OID_TCP_OFFLOAD_CURRENT_CONFIG 0xfc01020b | |
| #define OID_TCP_OFFLOAD_PARAMETERS 0xfc01020c | |
| #define OID_TCP_OFFLOAD_HARDWARE_CAPABILITIES 0xfc01020d | |
| #define OID_TCP_CONNECTION_OFFLOAD_CURRENT_CONFIG 0xfc01020e | |
| #define OID_TCP_CONNECTION_OFFLOAD_HARDWARE_CAPABILITIES 0xfc01020f | |
| #define OID_OFFLOAD_ENCAPSULATION 0x0101010a | |
| /* | |
| * Exported by NDIS itself and are only queryable. | |
| */ | |
| #define OID_GEN_INIT_TIME_MS 0x00020213 | |
| #define OID_GEN_RESET_COUNTS 0x00020214 | |
| #define OID_GEN_MEDIA_SENSE_COUNTS 0x00020215 | |
| #define OID_GEN_FRIENDLY_NAME 0x00020216 | |
| #define OID_GEN_NDIS_RESERVED_1 0x00020217 | |
| #define OID_GEN_NDIS_RESERVED_2 0x00020218 | |
| /* | |
| * New power management OIDs for NDIS 6.20 drivers | |
| */ | |
| #define OID_PM_CURRENT_CAPABILITIES 0xfd010107 | |
| #define OID_PM_HARDWARE_CAPABILITIES 0xfd010108 | |
| #define OID_PM_PARAMETERS 0xfd010109 | |
| #define OID_PM_ADD_WOL_PATTERN 0xfd01010a | |
| #define OID_PM_REMOVE_WOL_PATTERN 0xfd01010b | |
| #define OID_PM_WOL_PATTERN_LIST 0xfd01010c | |
| #define OID_PM_ADD_PROTOCOL_OFFLOAD 0xfd01010d | |
| #define OID_PM_GET_PROTOCOL_OFFLOAD 0xfd01010e | |
| #define OID_PM_REMOVE_PROTOCOL_OFFLOAD 0xfd01010f | |
| #define OID_PM_PROTOCOL_OFFLOAD_LIST 0xfd010110 | |
| #define OID_PM_RESERVED_1 0xfd010111 | |
| /* | |
| * New NDIS 6.20 OIDs for generic packet filtering | |
| */ | |
| #define OID_RECEIVE_FILTER_HARDWARE_CAPABILITIES 0x00010221 | |
| #define OID_RECEIVE_FILTER_GLOBAL_PARAMETERS 0x00010222 | |
| #define OID_RECEIVE_FILTER_ALLOCATE_QUEUE 0x00010223 | |
| #define OID_RECEIVE_FILTER_FREE_QUEUE 0x00010224 | |
| #define OID_RECEIVE_FILTER_ENUM_QUEUES 0x00010225 | |
| #define OID_RECEIVE_FILTER_QUEUE_PARAMETERS 0x00010226 | |
| #define OID_RECEIVE_FILTER_SET_FILTER 0x00010227 | |
| #define OID_RECEIVE_FILTER_CLEAR_FILTER 0x00010228 | |
| #define OID_RECEIVE_FILTER_ENUM_FILTERS 0x00010229 | |
| #define OID_RECEIVE_FILTER_PARAMETERS 0x0001022a | |
| #define OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE 0x0001022b | |
| #define OID_RECEIVE_FILTER_CURRENT_CAPABILITIES 0x0001022d | |
| #define OID_NIC_SWITCH_HARDWARE_CAPABILITIES 0x0001022e | |
| #define OID_NIC_SWITCH_CURRENT_CAPABILITIES 0x0001022f | |
| #define OID_RECEIVE_FILTER_MOVE_FILTER 0x00010230 | |
| #define OID_VLAN_RESERVED1 0x00010231 | |
| #define OID_VLAN_RESERVED2 0x00010232 | |
| #define OID_VLAN_RESERVED3 0x00010233 | |
| #define OID_VLAN_RESERVED4 0x00010234 | |
| #define OID_PACKET_COALESCING_FILTER_MATCH_COUNT 0x00010235 | |
| /* | |
| * OIDs used for SRIOV and NIC switch | |
| */ | |
| #define OID_NIC_SWITCH_CREATE_SWITCH 0x00010237 | |
| #define OID_NIC_SWITCH_PARAMETERS 0x00010238 | |
| #define OID_NIC_SWITCH_DELETE_SWITCH 0x00010239 | |
| #define OID_NIC_SWITCH_ENUM_SWITCHES 0x00010240 | |
| #define OID_NIC_SWITCH_CREATE_VPORT 0x00010241 | |
| #define OID_NIC_SWITCH_VPORT_PARAMETERS 0x00010242 | |
| #define OID_NIC_SWITCH_ENUM_VPORTS 0x00010243 | |
| #define OID_NIC_SWITCH_DELETE_VPORT 0x00010244 | |
| #define OID_NIC_SWITCH_ALLOCATE_VF 0x00010245 | |
| #define OID_NIC_SWITCH_FREE_VF 0x00010246 | |
| #define OID_NIC_SWITCH_VF_PARAMETERS 0x00010247 | |
| #define OID_NIC_SWITCH_ENUM_VFS 0x00010248 | |
| #define OID_SRIOV_HARDWARE_CAPABILITIES 0x00010249 | |
| #define OID_SRIOV_CURRENT_CAPABILITIES 0x00010250 | |
| #define OID_SRIOV_READ_VF_CONFIG_SPACE 0x00010251 | |
| #define OID_SRIOV_WRITE_VF_CONFIG_SPACE 0x00010252 | |
| #define OID_SRIOV_READ_VF_CONFIG_BLOCK 0x00010253 | |
| #define OID_SRIOV_WRITE_VF_CONFIG_BLOCK 0x00010254 | |
| #define OID_SRIOV_RESET_VF 0x00010255 | |
| #define OID_SRIOV_SET_VF_POWER_STATE 0x00010256 | |
| #define OID_SRIOV_VF_VENDOR_DEVICE_ID 0x00010257 | |
| #define OID_SRIOV_PROBED_BARS 0x00010258 | |
| #define OID_SRIOV_BAR_RESOURCES 0x00010259 | |
| #define OID_SRIOV_PF_LUID 0x00010260 | |
| /* | |
| * These OIDs are applicable to the VF only | |
| */ | |
| #define OID_SRIOV_CONFIG_STATE 0x00010261 | |
| #define OID_SRIOV_VF_SERIAL_NUMBER 0x00010262 | |
| #define OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK 0x00010269 | |
| /* | |
| * OID's used for Hyper-V extensible switch | |
| */ | |
| #define OID_SWITCH_PROPERTY_ADD 0x00010263 | |
| #define OID_SWITCH_PROPERTY_UPDATE 0x00010264 | |
| #define OID_SWITCH_PROPERTY_DELETE 0x00010265 | |
| #define OID_SWITCH_PROPERTY_ENUM 0x00010266 | |
| #define OID_SWITCH_FEATURE_STATUS_QUERY 0x00010267 | |
| #define OID_SWITCH_NIC_REQUEST 0x00010270 | |
| #define OID_SWITCH_PORT_PROPERTY_ADD 0x00010271 | |
| #define OID_SWITCH_PORT_PROPERTY_UPDATE 0x00010272 | |
| #define OID_SWITCH_PORT_PROPERTY_DELETE 0x00010273 | |
| #define OID_SWITCH_PORT_PROPERTY_ENUM 0x00010274 | |
| #define OID_SWITCH_PARAMETERS 0x00010275 | |
| #define OID_SWITCH_PORT_ARRAY 0x00010276 | |
| #define OID_SWITCH_NIC_ARRAY 0x00010277 | |
| #define OID_SWITCH_PORT_CREATE 0x00010278 | |
| #define OID_SWITCH_PORT_DELETE 0x00010279 | |
| #define OID_SWITCH_NIC_CREATE 0x0001027a | |
| #define OID_SWITCH_NIC_CONNECT 0x0001027b | |
| #define OID_SWITCH_NIC_DISCONNECT 0x0001027c | |
| #define OID_SWITCH_NIC_DELETE 0x0001027d | |
| #define OID_SWITCH_PORT_FEATURE_STATUS_QUERY 0x0001027e | |
| #define OID_SWITCH_PORT_TEARDOWN 0x0001027f | |
| #define OID_SWITCH_NIC_SAVE 0x00010290 | |
| #define OID_SWITCH_NIC_SAVE_COMPLETE 0x00010291 | |
| #define OID_SWITCH_NIC_RESTORE 0x00010292 | |
| #define OID_SWITCH_NIC_RESTORE_COMPLETE 0x00010293 | |
| #define OID_SWITCH_NIC_UPDATED 0x00010294 | |
| #define OID_SWITCH_PORT_UPDATED 0x00010295 | |
| #define OID_GEN_ISOLATION_PARAMETERS 0x00010300 | |
| #define OID_GEN_VENDOR_DRIVER_VERSION 0x00010116 | |
| #define OID_GEN_SUPPORTED_GUIDS 0x00010117 | |
| #define OID_GEN_NETWORK_LAYER_ADDRESSES 0x00010118 | |
| #define OID_GEN_TRANSPORT_HEADER_OFFSET 0x00010119 | |
| #define OID_GEN_MEDIA_CAPABILITIES 0x00010201 | |
| #define OID_GEN_PHYSICAL_MEDIUM 0x00010202 | |
| /* | |
| * New optional for NDIS 6.0 | |
| */ | |
| #define OID_GEN_RECEIVE_SCALE_CAPABILITIES 0x00010203 | |
| #define OID_GEN_RECEIVE_SCALE_PARAMETERS 0x00010204 | |
| /* | |
| * New for NDIS 6.0. NDIS will handle on behalf of the miniports | |
| */ | |
| #define OID_GEN_MAC_ADDRESS 0x00010205 | |
| #define OID_GEN_MAX_LINK_SPEED 0x00010206 | |
| #define OID_GEN_LINK_STATE 0x00010207 | |
| /* | |
| * New and required for NDIS 6 miniports | |
| */ | |
| #define OID_GEN_LINK_PARAMETERS 0x00010208 | |
| #define OID_GEN_INTERRUPT_MODERATION 0x00010209 | |
| #define OID_GEN_NDIS_RESERVED_3 0x0001020a | |
| #define OID_GEN_NDIS_RESERVED_4 0x0001020b | |
| #define OID_GEN_NDIS_RESERVED_5 0x0001020c | |
| /* | |
| * Port related OIDs | |
| */ | |
| #define OID_GEN_ENUMERATE_PORTS 0x0001020d | |
| #define OID_GEN_PORT_STATE 0x0001020e | |
| #define OID_GEN_PORT_AUTHENTICATION_PARAMETERS 0x0001020f | |
| /* | |
| * Optional OID for NDIS 6 miniports | |
| */ | |
| #define OID_GEN_TIMEOUT_DPC_REQUEST_CAPABILITIES 0x00010210 | |
| /* | |
| * These OID is handled by NDIS for PCI devices | |
| */ | |
| #define OID_GEN_PCI_DEVICE_CUSTOM_PROPERTIES 0x00010211 | |
| #define OID_GEN_NDIS_RESERVED_6 0x00010212 | |
| #define OID_GEN_PHYSICAL_MEDIUM_EX 0x00010213 | |
| #define OID_GEN_MACHINE_NAME 0x0001021a | |
| #define OID_GEN_RNDIS_CONFIG_PARAMETER 0x0001021b | |
| #define OID_GEN_VLAN_ID 0x0001021c | |
| #define OID_GEN_RECEIVE_HASH 0x0001021f | |
| #define OID_GEN_MINIPORT_RESTART_ATTRIBUTES 0x0001021d | |
| /* | |
| * Optional OID for header data/split | |
| */ | |
| #define OID_GEN_HD_SPLIT_PARAMETERS 0x0001021e | |
| #define OID_GEN_HD_SPLIT_CURRENT_CONFIG 0x00010220 | |
| /* | |
| * The following OIDs are used in querying interfaces | |
| */ | |
| #define OID_GEN_PROMISCUOUS_MODE 0x00010280 | |
| #define OID_GEN_LAST_CHANGE 0x00010281 | |
| #define OID_GEN_DISCONTINUITY_TIME 0x00010282 | |
| #define OID_GEN_OPERATIONAL_STATUS 0x00010283 | |
| #define OID_GEN_XMIT_LINK_SPEED 0x00010284 | |
| #define OID_GEN_RCV_LINK_SPEED 0x00010285 | |
| #define OID_GEN_UNKNOWN_PROTOS 0x00010286 | |
| #define OID_GEN_INTERFACE_INFO 0x00010287 | |
| #define OID_GEN_ADMIN_STATUS 0x00010288 | |
| #define OID_GEN_ALIAS 0x00010289 | |
| #define OID_GEN_MEDIA_CONNECT_STATUS_EX 0x0001028a | |
| #define OID_GEN_LINK_SPEED_EX 0x0001028b | |
| #define OID_GEN_MEDIA_DUPLEX_STATE 0x0001028c | |
| #define OID_GEN_IP_OPER_STATUS 0x0001028d | |
| #define OID_GEN_STATISTICS 0x00020106 | |
| #define OID_GEN_BYTES_RCV 0x00020219 | |
| #define OID_GEN_BYTES_XMIT 0x0002021a | |
| #define OID_GEN_RCV_DISCARDS 0x0002021b | |
| #define OID_GEN_XMIT_DISCARDS 0x0002021c | |
| #define OID_TCP_RSC_STATISTICS 0x0002021d | |
| #define OID_GEN_NDIS_RESERVED_7 0x0002021e | |
| /* | |
| * WWAN specific oids | |
| */ | |
| #define OID_WWAN_DRIVER_CAPS 0x0e010100 | |
| #define OID_WWAN_DEVICE_CAPS 0x0e010101 | |
| #define OID_WWAN_READY_INFO 0x0e010102 | |
| #define OID_WWAN_RADIO_STATE 0x0e010103 | |
| #define OID_WWAN_PIN 0x0e010104 | |
| #define OID_WWAN_PIN_LIST 0x0e010105 | |
| #define OID_WWAN_HOME_PROVIDER 0x0e010106 | |
| #define OID_WWAN_PREFERRED_PROVIDERS 0x0e010107 | |
| #define OID_WWAN_VISIBLE_PROVIDERS 0x0e010108 | |
| #define OID_WWAN_REGISTER_STATE 0x0e010109 | |
| #define OID_WWAN_PACKET_SERVICE 0x0e01010a | |
| #define OID_WWAN_SIGNAL_STATE 0x0e01010b | |
| #define OID_WWAN_CONNECT 0x0e01010c | |
| #define OID_WWAN_PROVISIONED_CONTEXTS 0x0e01010d | |
| #define OID_WWAN_SERVICE_ACTIVATION 0x0e01010e | |
| #define OID_WWAN_SMS_CONFIGURATION 0x0e01010f | |
| #define OID_WWAN_SMS_READ 0x0e010110 | |
| #define OID_WWAN_SMS_SEND 0x0e010111 | |
| #define OID_WWAN_SMS_DELETE 0x0e010112 | |
| #define OID_WWAN_SMS_STATUS 0x0e010113 | |
| #define OID_WWAN_VENDOR_SPECIFIC 0x0e010114 | |
| #define OID_WWAN_AUTH_CHALLENGE 0x0e010115 | |
| #define OID_WWAN_ENUMERATE_DEVICE_SERVICES 0x0e010116 | |
| #define OID_WWAN_SUBSCRIBE_DEVICE_SERVICE_EVENTS 0x0e010117 | |
| #define OID_WWAN_DEVICE_SERVICE_COMMAND 0x0e010118 | |
| #define OID_WWAN_USSD 0x0e010119 | |
| #define OID_WWAN_PIN_EX 0x0e010121 | |
| #define OID_WWAN_ENUMERATE_DEVICE_SERVICE_COMMANDS 0x0e010122 | |
| #define OID_WWAN_DEVICE_SERVICE_SESSION 0x0e010123 | |
| #define OID_WWAN_DEVICE_SERVICE_SESSION_WRITE 0x0e010124 | |
| #define OID_WWAN_PREFERRED_MULTICARRIER_PROVIDERS 0x0e010125 | |
| #define OID_WWAN_CREATE_MAC 0x0e010126 | |
| #define OID_WWAN_DELETE_MAC 0x0e010127 | |
| /* | |
| * IPsec Task offload V2 OIDs | |
| */ | |
| #define OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA 0xfc030202 | |
| #define OID_TCP_TASK_IPSEC_OFFLOAD_V2_DELETE_SA 0xfc030203 | |
| #define OID_TCP_TASK_IPSEC_OFFLOAD_V2_UPDATE_SA 0xfc030204 | |
| #define OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA_EX 0xfc030205 | |
| /* | |
| * Defines for FFP, obsolete | |
| */ | |
| #define OID_FFP_SUPPORT 0xfc010210 | |
| #define OID_FFP_FLUSH 0xfc010211 | |
| #define OID_FFP_CONTROL 0xfc010212 | |
| #define OID_FFP_PARAMS 0xfc010213 | |
| #define OID_FFP_DATA 0xfc010214 | |
| #define OID_FFP_DRIVER_STATS 0xfc020210 | |
| #define OID_FFP_ADAPTER_STATS 0xfc020211 | |
| /* | |
| * TCP Connection offload OID | |
| */ | |
| #define OID_TCP_CONNECTION_OFFLOAD_PARAMETERS 0xfc030201 | |
| /* | |
| * New Tunnel driver direct OIDs for NDIS 6.20 | |
| */ | |
| #define OID_TUNNEL_INTERFACE_SET_OID 0x0f010106 | |
| #define OID_TUNNEL_INTERFACE_RELEASE_OID 0x0f010107 | |
| /* | |
| * Defines for QOS | |
| */ | |
| #define OID_QOS_RESERVED1 0xfb010100 | |
| #define OID_QOS_RESERVED2 0xfb010101 | |
| #define OID_QOS_RESERVED3 0xfb010102 | |
| #define OID_QOS_RESERVED4 0xfb010103 | |
| #define OID_QOS_RESERVED5 0xfb010104 | |
| #define OID_QOS_RESERVED6 0xfb010105 | |
| #define OID_QOS_RESERVED7 0xfb010106 | |
| #define OID_QOS_RESERVED8 0xfb010107 | |
| #define OID_QOS_RESERVED9 0xfb010108 | |
| #define OID_QOS_RESERVED10 0xfb010109 | |
| #define OID_QOS_RESERVED11 0xfb01010a | |
| #define OID_QOS_RESERVED12 0xfb01010b | |
| #define OID_QOS_RESERVED13 0xfb01010c | |
| #define OID_QOS_RESERVED14 0xfb01010d | |
| #define OID_QOS_RESERVED15 0xfb01010e | |
| #define OID_QOS_RESERVED16 0xfb01010f | |
| #define OID_QOS_RESERVED17 0xfb010110 | |
| #define OID_QOS_RESERVED18 0xfb010111 | |
| #define OID_QOS_RESERVED19 0xfb010112 | |
| #define OID_QOS_RESERVED20 0xfb010113 | |
| #define OID_QOS_HARDWARE_CAPABILITIES 0xfc050001 | |
| #define OID_QOS_CURRENT_CAPABILITIES 0xfc050002 | |
| #define OID_QOS_PARAMETERS 0xfc050003 | |
| #define OID_QOS_OPERATIONAL_PARAMETERS 0xfc050004 | |
| #define OID_QOS_REMOTE_PARAMETERS 0xfc050005 | |
| /* | |
| * 802.11 vendor spesific Atheros 5XXX chipset OIDs. | |
| * Ref: https://social.msdn.microsoft.com/Forums/en-US/3af4044a-d242-40dc-9e00-cded1f3130df/get-noise-floor-using-native-wifi-api?forum=mediafoundationdevelopment | |
| */ | |
| #define OID_ATH_XMIT_FILTERED 0xff000000 | |
| #define OID_ATH_XMIT_RETRIES 0xff000001 | |
| #define OID_ATH_XMIT_EXCESSIVE_RETRIES 0xff000002 | |
| #define OID_ATH_XMIT_ACK_RSSI 0xff000003 | |
| #define OID_ATH_XMIT_HW_ACKS_MISSING 0xff000004 | |
| #define OID_ATH_XMIT_RTS_ERRORS 0xff000005 | |
| #define OID_ATH_XMIT_REQUESTS 0xff000006 | |
| #define OID_ATH_XMIT_REQUESTS_DENIED 0xff000007 | |
| #define OID_ATH_XMIT_FIFO_UNDERRUNS 0xff000008 | |
| #define OID_ATH_XMIT_DATA_RATE 0xff000009 | |
| #define OID_ATH_RCV_RSSI 0xff00000a | |
| #define OID_ATH_RCV_SW_FCS_ERRORS 0xff00000b | |
| #define OID_ATH_RCV_HW_FCS_ERRORS 0xff00000c | |
| #define OID_ATH_RCV_DECRYPT_ERRORS 0xff00000d | |
| #define OID_ATH_RCV_DUPLICATES 0xff00000e | |
| #define OID_ATH_RCV_MULTIPLE_DUPLICATES 0xff00000f | |
| #define OID_ATH_RCV_FIFO_OVERRUNS 0xff000010 | |
| #define OID_ATH_RCV_DATA_RATE 0xff000011 | |
| #define OID_ATH_RCV_MULTICAST_FRAMES 0xff000012 | |
| #define OID_ATH_CURRENT_CHANNEL 0xff000013 | |
| #define OID_ATH_TURBO_MODE 0xff000014 | |
| #define OID_ATH_NOISE_FLOOR 0xff000020 | |
| /* | |
| * Dot 11 specific OIDs from <windot11.h> | |
| */ | |
| #define NWF_DEFINE_OID(Seq,o,m) ((0x0E000000U) | ((o) << 16) | ((m) << 8) | (Seq)) | |
| #define NWF_OPERATIONAL_OID 1 | |
| #define NWF_MANDATORY_OID 1 | |
| #define NWF_OPTIONAL_OID 2 | |
| #define NWF_STATISTICS_OID 2 | |
| #define NWF_EXTAP_OID 3 | |
| #define NWF_VWIFI_OID 4 | |
| #define NWF_WFD_DEVICE_OID 5 | |
| #define NWF_WFD_ROLE_OID 6 | |
| #define NWF_POWER_SAVE_OID 7 | |
| #define NWF_MANUFACTURING_OID 8 | |
| #define OID_DOT11_NDIS_START 0x0D010300 | |
| #define OID_DOT11_OFFLOAD_CAPABILITY (OID_DOT11_NDIS_START + 0) | |
| #define OID_DOT11_CURRENT_OFFLOAD_CAPABILITY (OID_DOT11_NDIS_START + 1) | |
| #define OID_DOT11_WEP_OFFLOAD (OID_DOT11_NDIS_START + 2) | |
| #define OID_DOT11_WEP_UPLOAD (OID_DOT11_NDIS_START + 3) | |
| #define OID_DOT11_DEFAULT_WEP_OFFLOAD (OID_DOT11_NDIS_START + 4) | |
| #define OID_DOT11_DEFAULT_WEP_UPLOAD (OID_DOT11_NDIS_START + 5) | |
| #define OID_DOT11_MPDU_MAX_LENGTH (OID_DOT11_NDIS_START + 6) | |
| #define OID_DOT11_OPERATION_MODE_CAPABILITY (OID_DOT11_NDIS_START + 7) | |
| #define OID_DOT11_CURRENT_OPERATION_MODE (OID_DOT11_NDIS_START + 8) | |
| #define OID_DOT11_CURRENT_PACKET_FILTER (OID_DOT11_NDIS_START + 9) | |
| #define OID_DOT11_ATIM_WINDOW (OID_DOT11_NDIS_START + 10) | |
| #define OID_DOT11_SCAN_REQUEST (OID_DOT11_NDIS_START + 11) | |
| #define OID_DOT11_CURRENT_PHY_TYPE (OID_DOT11_NDIS_START + 12) | |
| #define OID_DOT11_JOIN_REQUEST (OID_DOT11_NDIS_START + 13) | |
| #define OID_DOT11_START_REQUEST (OID_DOT11_NDIS_START + 14) | |
| #define OID_DOT11_UPDATE_IE (OID_DOT11_NDIS_START + 15) | |
| #define OID_DOT11_RESET_REQUEST (OID_DOT11_NDIS_START + 16) | |
| #define OID_DOT11_NIC_POWER_STATE (OID_DOT11_NDIS_START + 17) | |
| #define OID_DOT11_OPTIONAL_CAPABILITY (OID_DOT11_NDIS_START + 18) | |
| #define OID_DOT11_CURRENT_OPTIONAL_CAPABILITY (OID_DOT11_NDIS_START + 19) | |
| #define OID_DOT11_STATION_ID (OID_DOT11_NDIS_START + 20) | |
| #define OID_DOT11_MEDIUM_OCCUPANCY_LIMIT (OID_DOT11_NDIS_START + 21) | |
| #define OID_DOT11_CF_POLLABLE (OID_DOT11_NDIS_START + 22) | |
| #define OID_DOT11_CFP_PERIOD (OID_DOT11_NDIS_START + 23) | |
| #define OID_DOT11_CFP_MAX_DURATION (OID_DOT11_NDIS_START + 24) | |
| #define OID_DOT11_POWER_MGMT_MODE (OID_DOT11_NDIS_START + 25) | |
| #define OID_DOT11_OPERATIONAL_RATE_SET (OID_DOT11_NDIS_START + 26) | |
| #define OID_DOT11_BEACON_PERIOD (OID_DOT11_NDIS_START + 27) | |
| #define OID_DOT11_DTIM_PERIOD (OID_DOT11_NDIS_START + 28) | |
| #define OID_DOT11_WEP_ICV_ERROR_COUNT (OID_DOT11_NDIS_START + 29) | |
| #define OID_DOT11_MAC_ADDRESS (OID_DOT11_NDIS_START + 30) | |
| #define OID_DOT11_RTS_THRESHOLD (OID_DOT11_NDIS_START + 31) | |
| #define OID_DOT11_SHORT_RETRY_LIMIT (OID_DOT11_NDIS_START + 32) | |
| #define OID_DOT11_LONG_RETRY_LIMIT (OID_DOT11_NDIS_START + 33) | |
| #define OID_DOT11_FRAGMENTATION_THRESHOLD (OID_DOT11_NDIS_START + 34) | |
| #define OID_DOT11_MAX_TRANSMIT_MSDU_LIFETIME (OID_DOT11_NDIS_START + 35) | |
| #define OID_DOT11_MAX_RECEIVE_LIFETIME (OID_DOT11_NDIS_START + 36) | |
| #define OID_DOT11_COUNTERS_ENTRY (OID_DOT11_NDIS_START + 37) | |
| #define OID_DOT11_SUPPORTED_PHY_TYPES (OID_DOT11_NDIS_START + 38) | |
| #define OID_DOT11_CURRENT_REG_DOMAIN (OID_DOT11_NDIS_START + 39) | |
| #define OID_DOT11_TEMP_TYPE (OID_DOT11_NDIS_START + 40) | |
| #define OID_DOT11_CURRENT_TX_ANTENNA (OID_DOT11_NDIS_START + 41) | |
| #define OID_DOT11_DIVERSITY_SUPPORT (OID_DOT11_NDIS_START + 42) | |
| #define OID_DOT11_CURRENT_RX_ANTENNA (OID_DOT11_NDIS_START + 43) | |
| #define OID_DOT11_SUPPORTED_POWER_LEVELS (OID_DOT11_NDIS_START + 44) | |
| #define OID_DOT11_CURRENT_TX_POWER_LEVEL (OID_DOT11_NDIS_START + 45) | |
| #define OID_DOT11_HOP_TIME (OID_DOT11_NDIS_START + 46) | |
| #define OID_DOT11_CURRENT_CHANNEL_NUMBER (OID_DOT11_NDIS_START + 47) | |
| #define OID_DOT11_MAX_DWELL_TIME (OID_DOT11_NDIS_START + 48) | |
| #define OID_DOT11_CURRENT_DWELL_TIME (OID_DOT11_NDIS_START + 49) | |
| #define OID_DOT11_CURRENT_SET (OID_DOT11_NDIS_START + 50) | |
| #define OID_DOT11_CURRENT_PATTERN (OID_DOT11_NDIS_START + 51) | |
| #define OID_DOT11_CURRENT_INDEX (OID_DOT11_NDIS_START + 52) | |
| #define OID_DOT11_CURRENT_CHANNEL (OID_DOT11_NDIS_START + 53) | |
| #define OID_DOT11_CCA_MODE_SUPPORTED (OID_DOT11_NDIS_START + 54) | |
| #define OID_DOT11_CURRENT_CCA_MODE (OID_DOT11_NDIS_START + 55) | |
| #define OID_DOT11_ED_THRESHOLD (OID_DOT11_NDIS_START + 56) | |
| #define OID_DOT11_CCA_WATCHDOG_TIMER_MAX (OID_DOT11_NDIS_START + 57) | |
| #define OID_DOT11_CCA_WATCHDOG_COUNT_MAX (OID_DOT11_NDIS_START + 58) | |
| #define OID_DOT11_CCA_WATCHDOG_TIMER_MIN (OID_DOT11_NDIS_START + 59) | |
| #define OID_DOT11_CCA_WATCHDOG_COUNT_MIN (OID_DOT11_NDIS_START + 60) | |
| #define OID_DOT11_REG_DOMAINS_SUPPORT_VALUE (OID_DOT11_NDIS_START + 61) | |
| #define OID_DOT11_SUPPORTED_TX_ANTENNA (OID_DOT11_NDIS_START + 62) | |
| #define OID_DOT11_SUPPORTED_RX_ANTENNA (OID_DOT11_NDIS_START + 63) | |
| #define OID_DOT11_DIVERSITY_SELECTION_RX (OID_DOT11_NDIS_START + 64) | |
| #define OID_DOT11_SUPPORTED_DATA_RATES_VALUE (OID_DOT11_NDIS_START + 65) | |
| #define OID_DOT11_CURRENT_FREQUENCY (OID_DOT11_NDIS_START + 66) | |
| #define OID_DOT11_TI_THRESHOLD (OID_DOT11_NDIS_START + 67) | |
| #define OID_DOT11_FREQUENCY_BANDS_SUPPORTED (OID_DOT11_NDIS_START + 68) | |
| #define OID_DOT11_SHORT_PREAMBLE_OPTION_IMPLEMENTED (OID_DOT11_NDIS_START + 69) | |
| #define OID_DOT11_PBCC_OPTION_IMPLEMENTED (OID_DOT11_NDIS_START + 70) | |
| #define OID_DOT11_CHANNEL_AGILITY_PRESENT (OID_DOT11_NDIS_START + 71) | |
| #define OID_DOT11_CHANNEL_AGILITY_ENABLED (OID_DOT11_NDIS_START + 72) | |
| #define OID_DOT11_HR_CCA_MODE_SUPPORTED (OID_DOT11_NDIS_START + 73) | |
| #define OID_DOT11_MULTI_DOMAIN_CAPABILITY_IMPLEMENTED (OID_DOT11_NDIS_START + 74) | |
| #define OID_DOT11_MULTI_DOMAIN_CAPABILITY_ENABLED (OID_DOT11_NDIS_START + 75) | |
| #define OID_DOT11_COUNTRY_STRING (OID_DOT11_NDIS_START + 76) | |
| #define OID_DOT11_MULTI_DOMAIN_CAPABILITY (OID_DOT11_NDIS_START + 77) | |
| #define OID_DOT11_EHCC_PRIME_RADIX (OID_DOT11_NDIS_START + 78) | |
| #define OID_DOT11_EHCC_NUMBER_OF_CHANNELS_FAMILY_INDEX (OID_DOT11_NDIS_START + 79) | |
| #define OID_DOT11_EHCC_CAPABILITY_IMPLEMENTED (OID_DOT11_NDIS_START + 80) | |
| #define OID_DOT11_EHCC_CAPABILITY_ENABLED (OID_DOT11_NDIS_START + 81) | |
| #define OID_DOT11_HOP_ALGORITHM_ADOPTED (OID_DOT11_NDIS_START + 82) | |
| #define OID_DOT11_RANDOM_TABLE_FLAG (OID_DOT11_NDIS_START + 83) | |
| #define OID_DOT11_NUMBER_OF_HOPPING_SETS (OID_DOT11_NDIS_START + 84) | |
| #define OID_DOT11_HOP_MODULUS (OID_DOT11_NDIS_START + 85) | |
| #define OID_DOT11_HOP_OFFSET (OID_DOT11_NDIS_START + 86) | |
| #define OID_DOT11_HOPPING_PATTERN (OID_DOT11_NDIS_START + 87) | |
| #define OID_DOT11_RANDOM_TABLE_FIELD_NUMBER (OID_DOT11_NDIS_START + 88) | |
| #define OID_DOT11_WPA_TSC (OID_DOT11_NDIS_START + 89) | |
| #define OID_DOT11_RSSI_RANGE (OID_DOT11_NDIS_START + 90) | |
| #define OID_DOT11_RF_USAGE (OID_DOT11_NDIS_START + 91) | |
| #define OID_DOT11_NIC_SPECIFIC_EXTENSION (OID_DOT11_NDIS_START + 92) | |
| #define OID_DOT11_AP_JOIN_REQUEST (OID_DOT11_NDIS_START + 93) | |
| #define OID_DOT11_ERP_PBCC_OPTION_IMPLEMENTED (OID_DOT11_NDIS_START + 94) | |
| #define OID_DOT11_ERP_PBCC_OPTION_ENABLED (OID_DOT11_NDIS_START + 95) | |
| #define OID_DOT11_DSSS_OFDM_OPTION_IMPLEMENTED (OID_DOT11_NDIS_START + 96) | |
| #define OID_DOT11_DSSS_OFDM_OPTION_ENABLED (OID_DOT11_NDIS_START + 97) | |
| #define OID_DOT11_SHORT_SLOT_TIME_OPTION_IMPLEMENTED (OID_DOT11_NDIS_START + 98) | |
| #define OID_DOT11_SHORT_SLOT_TIME_OPTION_ENABLED (OID_DOT11_NDIS_START + 99) | |
| #define OID_DOT11_MAX_MAC_ADDRESS_STATES (OID_DOT11_NDIS_START + 100) | |
| #define OID_DOT11_RECV_SENSITIVITY_LIST (OID_DOT11_NDIS_START + 101) | |
| #define OID_DOT11_WME_IMPLEMENTED (OID_DOT11_NDIS_START + 102) | |
| #define OID_DOT11_WME_ENABLED (OID_DOT11_NDIS_START + 103) | |
| #define OID_DOT11_WME_AC_PARAMETERS (OID_DOT11_NDIS_START + 104) | |
| #define OID_DOT11_WME_UPDATE_IE (OID_DOT11_NDIS_START + 105) | |
| #define OID_DOT11_QOS_TX_QUEUES_SUPPORTED (OID_DOT11_NDIS_START + 106) | |
| #define OID_DOT11_QOS_TX_DURATION (OID_DOT11_NDIS_START + 107) | |
| #define OID_DOT11_QOS_TX_MEDIUM_TIME (OID_DOT11_NDIS_START + 108) | |
| #define OID_DOT11_SUPPORTED_OFDM_FREQUENCY_LIST (OID_DOT11_NDIS_START + 109) | |
| #define OID_DOT11_SUPPORTED_DSSS_CHANNEL_LIST (OID_DOT11_NDIS_START + 110) | |
| #define OID_DOT11_AUTO_CONFIG_ENABLED NWF_DEFINE_OID (120, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_ENUM_BSS_LIST NWF_DEFINE_OID (121, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_FLUSH_BSS_LIST NWF_DEFINE_OID (122, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_POWER_MGMT_REQUEST NWF_DEFINE_OID (123, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_DESIRED_SSID_LIST NWF_DEFINE_OID (124, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_EXCLUDED_MAC_ADDRESS_LIST NWF_DEFINE_OID (125, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_DESIRED_BSSID_LIST NWF_DEFINE_OID (126, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_DESIRED_BSS_TYPE NWF_DEFINE_OID (127, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_PMKID_LIST NWF_DEFINE_OID (128, NWF_OPERATIONAL_OID, NWF_OPTIONAL_OID) | |
| #define OID_DOT11_CONNECT_REQUEST NWF_DEFINE_OID (129, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_EXCLUDE_UNENCRYPTED NWF_DEFINE_OID (130, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_STATISTICS NWF_DEFINE_OID (131, NWF_STATISTICS_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_PRIVACY_EXEMPTION_LIST NWF_DEFINE_OID (132, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_ENABLED_AUTHENTICATION_ALGORITHM NWF_DEFINE_OID (133, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_SUPPORTED_UNICAST_ALGORITHM_PAIR NWF_DEFINE_OID (134, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_ENABLED_UNICAST_CIPHER_ALGORITHM NWF_DEFINE_OID (135, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_SUPPORTED_MULTICAST_ALGORITHM_PAIR NWF_DEFINE_OID (136, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_ENABLED_MULTICAST_CIPHER_ALGORITHM NWF_DEFINE_OID (137, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_CIPHER_DEFAULT_KEY_ID NWF_DEFINE_OID (138, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_CIPHER_DEFAULT_KEY NWF_DEFINE_OID (139, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_CIPHER_KEY_MAPPING_KEY NWF_DEFINE_OID (140, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_ENUM_ASSOCIATION_INFO NWF_DEFINE_OID (141, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_DISCONNECT_REQUEST NWF_DEFINE_OID (142, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_UNICAST_USE_GROUP_ENABLED NWF_DEFINE_OID (143, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_HARDWARE_PHY_STATE NWF_DEFINE_OID (144, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_DESIRED_PHY_LIST NWF_DEFINE_OID (145, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_CURRENT_PHY_ID NWF_DEFINE_OID (146, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_MEDIA_STREAMING_ENABLED NWF_DEFINE_OID (147, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_UNREACHABLE_DETECTION_THRESHOLD NWF_DEFINE_OID (148, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_ACTIVE_PHY_LIST NWF_DEFINE_OID (149, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_EXTSTA_CAPABILITY NWF_DEFINE_OID (150, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_DATA_RATE_MAPPING_TABLE NWF_DEFINE_OID (151, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_SUPPORTED_COUNTRY_OR_REGION_STRING NWF_DEFINE_OID (152, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_DESIRED_COUNTRY_OR_REGION_STRING NWF_DEFINE_OID (153, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_PORT_STATE_NOTIFICATION NWF_DEFINE_OID (154, NWF_OPERATIONAL_OID, NWF_OPTIONAL_OID) | |
| #define OID_DOT11_IBSS_PARAMS NWF_DEFINE_OID (155, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_QOS_PARAMS NWF_DEFINE_OID (156, NWF_OPERATIONAL_OID, NWF_OPTIONAL_OID) | |
| #define OID_DOT11_SAFE_MODE_ENABLED NWF_DEFINE_OID (157, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_HIDDEN_NETWORK_ENABLED NWF_DEFINE_OID (158, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_ASSOCIATION_PARAMS NWF_DEFINE_OID (159, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_SAFE_MODE_HT_ENABLED NWF_DEFINE_OID (160, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_PRIVATE_OIDS_START (OID_DOT11_NDIS_START + 1024) | |
| #define OID_DOT11_CURRENT_ADDRESS (OID_DOT11_PRIVATE_OIDS_START + 2) | |
| #define OID_DOT11_PERMANENT_ADDRESS (OID_DOT11_PRIVATE_OIDS_START + 3) | |
| #define OID_DOT11_MULTICAST_LIST (OID_DOT11_PRIVATE_OIDS_START + 4) | |
| #define OID_DOT11_MAXIMUM_LIST_SIZE (OID_DOT11_PRIVATE_OIDS_START + 5) | |
| #define OID_DOT11_WPS_ENABLED NWF_DEFINE_OID (0x01, NWF_EXTAP_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_START_AP_REQUEST NWF_DEFINE_OID (0x02, NWF_EXTAP_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_AVAILABLE_CHANNEL_LIST NWF_DEFINE_OID (0x03, NWF_EXTAP_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_AVAILABLE_FREQUENCY_LIST NWF_DEFINE_OID (0x04, NWF_EXTAP_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_DISASSOCIATE_PEER_REQUEST NWF_DEFINE_OID (0x05, NWF_EXTAP_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_INCOMING_ASSOCIATION_DECISION NWF_DEFINE_OID (0x06, NWF_EXTAP_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_ADDITIONAL_IE NWF_DEFINE_OID (0x07, NWF_EXTAP_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_ENUM_PEER_INFO NWF_DEFINE_OID (0x08, NWF_EXTAP_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_CREATE_MAC NWF_DEFINE_OID (0x01, NWF_VWIFI_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_DELETE_MAC NWF_DEFINE_OID (0x02, NWF_VWIFI_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_PREFERRED_MAC NWF_DEFINE_OID (0x03, NWF_VWIFI_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_VIRTUAL_STATION_CAPABILITY NWF_DEFINE_OID (0x04, NWF_VWIFI_OID, NWF_OPTIONAL_OID) | |
| #define OID_DOT11_WFD_DEVICE_CAPABILITY NWF_DEFINE_OID (0x01, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_WFD_GROUP_OWNER_CAPABILITY NWF_DEFINE_OID (0x02, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_WFD_DEVICE_INFO NWF_DEFINE_OID (0x03, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_WFD_SECONDARY_DEVICE_TYPE_LIST NWF_DEFINE_OID (0x04, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_WFD_DISCOVER_REQUEST NWF_DEFINE_OID (0x05, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_WFD_ENUM_DEVICE_LIST NWF_DEFINE_OID (0x06, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_WFD_LISTEN_STATE_DISCOVERABILITY NWF_DEFINE_OID (0x07, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_WFD_ADDITIONAL_IE NWF_DEFINE_OID (0x08, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_WFD_FLUSH_DEVICE_LIST NWF_DEFINE_OID (0x09, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_WFD_SEND_GO_NEGOTIATION_REQUEST NWF_DEFINE_OID (0x0A, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_WFD_SEND_GO_NEGOTIATION_RESPONSE NWF_DEFINE_OID (0x0B, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_WFD_SEND_GO_NEGOTIATION_CONFIRMATION NWF_DEFINE_OID (0x0C, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_WFD_SEND_INVITATION_REQUEST NWF_DEFINE_OID (0x0D, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_WFD_SEND_INVITATION_RESPONSE NWF_DEFINE_OID (0x0E, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_WFD_SEND_PROVISION_DISCOVERY_REQUEST NWF_DEFINE_OID (0x0F, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_WFD_SEND_PROVISION_DISCOVERY_RESPONSE NWF_DEFINE_OID (0x10, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_WFD_GET_DIALOG_TOKEN NWF_DEFINE_OID (0x11, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_WFD_STOP_DISCOVERY NWF_DEFINE_OID (0x12, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_WFD_DEVICE_LISTEN_CHANNEL NWF_DEFINE_OID (0x13, NWF_WFD_DEVICE_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_WFD_DESIRED_GROUP_ID NWF_DEFINE_OID (0x01, NWF_WFD_ROLE_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_WFD_START_GO_REQUEST NWF_DEFINE_OID (0x02, NWF_WFD_ROLE_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_WFD_GROUP_START_PARAMETERS NWF_DEFINE_OID (0x03, NWF_WFD_ROLE_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_WFD_CONNECT_TO_GROUP_REQUEST NWF_DEFINE_OID (0x04, NWF_WFD_ROLE_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_WFD_DISCONNECT_FROM_GROUP_REQUEST NWF_DEFINE_OID (0x05, NWF_WFD_ROLE_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_WFD_GROUP_JOIN_PARAMETERS NWF_DEFINE_OID (0x06, NWF_WFD_ROLE_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_POWER_MGMT_MODE_AUTO_ENABLED NWF_DEFINE_OID (0x01, NWF_POWER_SAVE_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_POWER_MGMT_MODE_STATUS NWF_DEFINE_OID (0x02, NWF_POWER_SAVE_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_OFFLOAD_NETWORK_LIST NWF_DEFINE_OID (0x03, NWF_POWER_SAVE_OID, NWF_MANDATORY_OID) | |
| #define OID_DOT11_MANUFACTURING_TEST NWF_DEFINE_OID (0x01, NWF_MANUFACTURING_OID, NWF_OPTIONAL_OID) | |
| #ifndef INFO_FLAG_DONT_EXPORT | |
| #define INFO_FLAG_DONT_EXPORT 8 | |
| #endif | |
| #ifndef INFO_FLAG_AIRPCAP_CARD | |
| #define INFO_FLAG_AIRPCAP_CARD 16 | |
| #endif | |
| #ifndef INFO_FLAG_NPFIM_DEVICE | |
| #define INFO_FLAG_NPFIM_DEVICE 32 | |
| #endif | |
| #ifndef IF_TYPE_IEEE80216_WMAN | |
| #define IF_TYPE_IEEE80216_WMAN 237 | |
| #endif | |
| #ifndef IF_TYPE_WWANPP | |
| #define IF_TYPE_WWANPP 243 | |
| #endif | |
| #ifndef IF_TYPE_WWANPP2 | |
| #define IF_TYPE_WWANPP2 244 | |
| #endif | |
| /* Rewritten from <NtDDNdis.h> and 'enum _NDIS_PHYSICAL_MEDIUM': | |
| */ | |
| #define ND_PHY_Unspecified 0 | |
| #define ND_PHY_WirelessLan 1 | |
| #define ND_PHY_CableModem 2 | |
| #define ND_PHY_PhoneLine 3 | |
| #define ND_PHY_PowerLine 4 | |
| #define ND_PHY_DSL 5 | |
| #define ND_PHY_FibreChannel 6 | |
| #define ND_PHY_1394 7 | |
| #define ND_PHY_WirelessWan 8 | |
| #define ND_PHY_Native802_11 9 | |
| #define ND_PHY_Bluetooth 10 | |
| #define ND_PHY_Infiniband 11 | |
| #define ND_PHY_WiMax 12 | |
| #define ND_PHY_UWB 13 | |
| #define ND_PHY_802_3 14 | |
| #define ND_PHY_802_5 15 | |
| #define ND_PHY_Irda 16 | |
| #define ND_PHY_WiredWAN 17 | |
| #define ND_PHY_WiredCoWan 18 | |
| static BOOL get_real_media (ADAPTER *adapter, int *media) | |
| { | |
| struct { | |
| PACKET_OID_DATA oidData; | |
| DWORD media; | |
| } oid; | |
| memset (&oid, 0, sizeof(oid)); | |
| oid.oidData.Oid = OID_GEN_PHYSICAL_MEDIUM; | |
| oid.oidData.Length = sizeof(oid); | |
| if (!PacketRequest(adapter, FALSE, &oid.oidData)) | |
| return (FALSE); | |
| *media = *(int*) &oid.oidData.Data; | |
| return (TRUE); | |
| } | |
| /* | |
| * Ref: https://docs.microsoft.com/en-us/windows-hardware/drivers/network/oid-gen-media-connect-status | |
| */ | |
| static BOOL get_link_state (ADAPTER *adapter, int *state) | |
| { | |
| struct { | |
| PACKET_OID_DATA oidData; | |
| DWORD state; | |
| } oid; | |
| memset (&oid, 0, sizeof(oid)); | |
| oid.oidData.Oid = OID_GEN_MEDIA_CONNECT_STATUS; | |
| oid.oidData.Length = sizeof(oid); | |
| if (!PacketRequest(adapter, FALSE, &oid.oidData)) | |
| return (FALSE); | |
| *state = *(int*) &oid.oidData.Data; | |
| return (TRUE); | |
| } | |
| static char ver_buff[30]; | |
| static BOOL get_driver_version (ADAPTER *adapter, const char **ver_info) | |
| { | |
| struct { | |
| PACKET_OID_DATA oidData; | |
| WORD ver_buf[2]; | |
| } oid; | |
| const WORD *p; | |
| WORD lo_ver, hi_ver; | |
| memset (&oid, 0, sizeof(oid)); | |
| oid.oidData.Oid = OID_GEN_VENDOR_DRIVER_VERSION; | |
| oid.oidData.Length = sizeof(oid); | |
| *ver_info = NULL; | |
| if (!PacketRequest(adapter, FALSE, &oid.oidData)) | |
| return (FALSE); | |
| p = (const WORD*) &oid.oidData.Data; | |
| lo_ver = (p[0] / 0x10000) % 0x10000; | |
| hi_ver = (p[1] % 0x10000); | |
| if (hi_ver == 0xFF || lo_ver == 0xFF) | |
| strcpy (ver_buff, "unknown"); | |
| else snprintf (ver_buff, sizeof(ver_buff), "%d.%d", hi_ver, lo_ver); | |
| *ver_info = ver_buff; | |
| return (TRUE); | |
| } | |
| static BOOL get_NDIS_driver_version (ADAPTER *adapter, const char **ver_info) | |
| { | |
| struct { | |
| PACKET_OID_DATA oidData; | |
| BYTE ver_buf[2]; | |
| } oid; | |
| const BYTE *p; | |
| BYTE lo_ver, hi_ver; | |
| memset (&oid, 0, sizeof(oid)); | |
| oid.oidData.Oid = OID_GEN_DRIVER_VERSION; | |
| oid.oidData.Length = sizeof(oid); | |
| *ver_info = NULL; | |
| if (!PacketRequest(adapter, FALSE, &oid.oidData)) | |
| return (FALSE); | |
| p = (const BYTE*)&oid.oidData.Data; | |
| lo_ver = *p++; | |
| hi_ver = *p; | |
| if (hi_ver == 0xFF || lo_ver == 0xFF) | |
| strcpy (ver_buff, "unknown"); | |
| else snprintf (ver_buff, sizeof(ver_buff), "%d.%d", hi_ver, lo_ver); | |
| *ver_info = ver_buff; | |
| return (TRUE); | |
| } | |
| #if defined(HAVE_AIRPCAP_API) | |
| /* If the adapter can transmit. Not tested since I don't have one. | |
| */ | |
| static BOOL can_tx; | |
| static void print_airpcap_capab (AirpcapHandle *ap_hnd) | |
| { | |
| static const struct tok bus_types[] = { | |
| { AIRPCAP_BUS_USB, "USB" }, | |
| { AIRPCAP_BUS_PCI, "PCI" }, | |
| { AIRPCAP_BUS_PCI_EXPRESS, "PCI-Express" }, | |
| { AIRPCAP_BUS_MINI_PCI, "Mini-PCI" }, | |
| { AIRPCAP_BUS_MINI_PCI_EXPRESS, "Mini-PCI-Express" }, | |
| { AIRPCAP_BUS_CARDBUS, "Cardbus" }, | |
| { AIRPCAP_BUS_EXPRESSCARD, "ExpressCard" } | |
| }; | |
| struct _AirpcapDeviceCapabilities *caps; | |
| if (!AirpcapGetDeviceCapabilities(ap_hnd,&caps)) | |
| return; | |
| can_tx = caps->CanTransmit; | |
| printf(", name \"%s\"", caps->AdapterModelName); | |
| printf(", %s bus", tok2str(bus_types, "%d?", caps->AdapterBus)); | |
| printf(", %s", can_tx ? "TX" : "RX only"); | |
| printf(", %sext-ant ", caps->ExternalAntennaPlug ? "" : "No "); | |
| if (ap_hnd->AdapterType == ADAPTER_TYPE_AR5416_DRIVER) | |
| puts (", Atheros AR5416 chip"); | |
| else puts (""); | |
| printf(" Media: 802.11"); | |
| if (caps->SupportedMedia & AIRPCAP_MEDIUM_802_11_A) | |
| printf("/a"); | |
| if (caps->SupportedMedia & AIRPCAP_MEDIUM_802_11_B) | |
| printf("/b"); | |
| if (caps->SupportedMedia & AIRPCAP_MEDIUM_802_11_G) | |
| printf("/g"); | |
| if (caps->SupportedMedia & AIRPCAP_MEDIUM_802_11_N) | |
| printf("/n"); | |
| printf(", band: "); | |
| if (caps->SupportedBands & AIRPCAP_BAND_2GHZ) | |
| printf("2GHz "); | |
| if (caps->SupportedBands & AIRPCAP_BAND_5GHZ) | |
| printf("5GHz"); | |
| } | |
| static void print_airpcap_mode (AirpcapHandle *ap_hnd) | |
| { | |
| UINT mode = 0; | |
| printf(" Mode: "); | |
| if (!AirpcapGetDeviceMacFlags(ap_hnd, &mode)) | |
| printf("?"); | |
| else | |
| printf ("monitor %s, ACK: %s", | |
| (mode & AIRPCAP_MF_MONITOR_MODE_ON) ? "ON" : "OFF", | |
| (mode & AIRPCAP_MF_ACK_FRAMES_ON) ? "ON" : "OFF"); | |
| } | |
| static void print_airpcap_validation (AirpcapHandle *ap_hnd) | |
| { | |
| AirpcapValidationType type = 0; | |
| static const struct tok validation_types[] = { | |
| { AIRPCAP_VT_ACCEPT_EVERYTHING, "Accept all" }, | |
| { AIRPCAP_VT_ACCEPT_CORRECT_FRAMES, "Correct frames only" }, | |
| { AIRPCAP_VT_ACCEPT_CORRUPT_FRAMES, "Corrupt frames only" }, | |
| { 0, NULL } | |
| }; | |
| printf(" Validation: "); | |
| if (!AirpcapGetFcsValidation(ap_hnd, &type)) | |
| printf ("?"); | |
| else printf ("%s", tok2str(validation_types, "%d", type)); | |
| } | |
| static const char *get_channel (UINT freq) | |
| { | |
| AirpcapChannelBand band; | |
| static char buf[10]; | |
| UINT chann; | |
| if (!AirpcapConvertFrequencyToChannel (freq, &chann, &band)) | |
| return ("?"); | |
| return _ultoa (chann, buf, 10); | |
| } | |
| static void print_airpcap_channel_info (AirpcapHandle *ap_hnd) | |
| { | |
| UINT i, num_chan = 0; | |
| AirpcapChannelInfo *chan_info = NULL; | |
| AirpcapChannelInfo channel; | |
| #define CAN_TX(flag) (can_tx && (flag & AIRPCAP_CIF_TX_ENABLED) ? "(Tx)" : "") | |
| printf(" Supported CH: "); | |
| if (!AirpcapGetDeviceSupportedChannels(ap_hnd, &chan_info, &num_chan)) | |
| puts("<failed>"); | |
| else | |
| for (i = 0; i < num_chan; i++, chan_info++) { | |
| printf("%s%u MHz. Ch: %2s, Ext: %d %s\n", | |
| (i == 0) ? "" : " ", | |
| chan_info->Frequency, get_channel(chan_info->Frequency), | |
| chan_info->ExtChannel, CAN_TX(chan_info->Flags)); | |
| } | |
| printf(" Current CH: "); | |
| if (AirpcapGetDeviceChannelEx(ap_hnd, &channel)) | |
| printf("%u MHz. Ch: %2s, Ext: %d %s\n", | |
| channel.Frequency, get_channel(channel.Frequency), | |
| channel.ExtChannel, CAN_TX(channel.Flags)); | |
| else | |
| puts("<failed>"); | |
| } | |
| static AirpcapHandle *get_air_handle (pcap_t *pcap, char *ebuf) | |
| { | |
| ADAPTER *adapter = pcap_get_adapter (pcap); | |
| AirpcapHandle *air_hnd = NULL; | |
| if (adapter) { | |
| air_hnd = PacketGetAirPcapHandle (adapter); | |
| if (air_hnd) | |
| return (air_hnd); | |
| /* fall through */ | |
| } | |
| strlcpy (ebuf, "pcap-handle is not for a AirPcap device", PCAP_ERRBUF_SIZE); | |
| return (NULL); | |
| } | |
| int airpcap_channel_set (pcap_t *pcap, int new_ch, int *old_ch, char *ebuf) | |
| { | |
| AirpcapHandle *hnd = get_air_handle (pcap, ebuf); | |
| static UINT chan = 0; | |
| if (!hnd) | |
| return (0); | |
| if (old_ch && AirpcapGetDeviceChannel(hnd, &chan)) | |
| *old_ch = (int)chan; | |
| if (new_ch != -1 && new_ch != (int)chan && !AirpcapSetDeviceChannel(hnd,(UINT)new_ch)) | |
| { | |
| if (ebuf) | |
| snprintf (ebuf, PCAP_ERRBUF_SIZE, "Error setting channel: %u: %s", | |
| new_ch, AirpcapGetLastError(hnd)); | |
| return (0); | |
| } | |
| return (1); | |
| } | |
| int airpcap_capture_all (pcap_t *pcap, int all, char *ebuf) | |
| { | |
| AirpcapHandle *hnd = get_air_handle (pcap, ebuf); | |
| AirpcapValidationType type; | |
| const char *err_str; | |
| if (!hnd) | |
| return (0); | |
| type = all ? AIRPCAP_VT_ACCEPT_EVERYTHING : | |
| AIRPCAP_VT_ACCEPT_CORRECT_FRAMES; | |
| err_str = all ? "AIRPCAP_VT_ACCEPT_EVERYTHING" : | |
| "AIRPCAP_VT_ACCEPT_CORRECT_FRAMES"; | |
| if (!AirpcapSetFcsValidation(hnd,type)) | |
| { | |
| snprintf (ebuf, PCAP_ERRBUF_SIZE, "Error in FCS validation (%s): %s", | |
| err_str, AirpcapGetLastError(hnd)); | |
| return (0); | |
| } | |
| return (1); | |
| } | |
| #endif /* HAVE_AIRPCAP_API */ | |
| void get_version_extras (void) | |
| { | |
| const char *ver = PacketGetDriverVersion(); | |
| UINT air_major, air_minor, air_rev, air_build; | |
| /* Figure out the version hell in WinPcap. If the NPF.SYS version was not found | |
| * or because WinPcap was not initialised, the above returns '' | |
| */ | |
| if (!ver || *ver == '\0') { | |
| char buf[100]; | |
| const char *r_paren, *r_space; | |
| ver = pcap_lib_version(); | |
| r_paren = strrchr (ver, ')'); | |
| r_space = strrchr (ver, ' '); | |
| if (r_paren && r_space) | |
| snprintf (buf, sizeof(buf), "not found, assuming %.*s", (int)(r_paren-r_space-1), r_space+1); | |
| else | |
| strlcpy (buf, ver, sizeof(buf)); | |
| ver = buf; | |
| } | |
| fprintf(stderr, "NPF.SYS version %s.\n", ver); | |
| #ifdef HAVE_AIRPCAP_API | |
| AirpcapGetVersion (&air_major, &air_minor, &air_rev, &air_build); | |
| fprintf (stderr, "AirPcap version %u.%u.%u.%u\n", air_major, air_minor, air_rev, air_build); | |
| #else | |
| (void) air_major; | |
| (void) air_minor; | |
| (void) air_rev; | |
| (void) air_build; | |
| #endif | |
| } | |
| static ADAPTER *open_adapter (const char *device, pcap_t **pcap_p) | |
| { | |
| char ebuf [PCAP_ERRBUF_SIZE]; | |
| pcap_t *pcap = pcap_open_live (device, 100, 0, 500, ebuf); | |
| *pcap_p = NULL; | |
| if (!pcap) | |
| return (NULL); | |
| *pcap_p = pcap; | |
| return pcap_get_adapter (pcap); | |
| } | |
| #define NDIS_PACKET_TYPE_802_11_RAW_DATA (0x00010000U) | |
| #define NDIS_PACKET_TYPE_802_11_DIRECTED_MGMT (0x00020000U) | |
| #define NDIS_PACKET_TYPE_802_11_BROADCAST_MGMT (0x00040000U) | |
| #define NDIS_PACKET_TYPE_802_11_MULTICAST_MGMT (0x00080000U) | |
| #define NDIS_PACKET_TYPE_802_11_ALL_MULTICAST_MGMT (0x00100000U) | |
| #define NDIS_PACKET_TYPE_802_11_PROMISCUOUS_MGMT (0x00200000U) | |
| #define NDIS_PACKET_TYPE_802_11_RAW_MGMT (0x00400000U) | |
| #define NDIS_PACKET_TYPE_802_11_DIRECTED_CTRL (0x00800000U) | |
| #define NDIS_PACKET_TYPE_802_11_BROADCAST_CTRL (0x01000000U) | |
| #define NDIS_PACKET_TYPE_802_11_PROMISCUOUS_CTRL (0x02000000U) | |
| #ifndef NDIS_PACKET_TYPE_ALL_802_11_FILTERS | |
| #define NDIS_PACKET_TYPE_ALL_802_11_FILTERS \ | |
| (NDIS_PACKET_TYPE_DIRECTED | \ | |
| NDIS_PACKET_TYPE_MULTICAST | \ | |
| NDIS_PACKET_TYPE_ALL_MULTICAST | \ | |
| NDIS_PACKET_TYPE_BROADCAST | \ | |
| NDIS_PACKET_TYPE_PROMISCUOUS | \ | |
| NDIS_PACKET_TYPE_802_11_RAW_DATA | \ | |
| NDIS_PACKET_TYPE_802_11_DIRECTED_MGMT | \ | |
| NDIS_PACKET_TYPE_802_11_BROADCAST_MGMT | \ | |
| NDIS_PACKET_TYPE_802_11_MULTICAST_MGMT | \ | |
| NDIS_PACKET_TYPE_802_11_ALL_MULTICAST_MGMT | \ | |
| NDIS_PACKET_TYPE_802_11_PROMISCUOUS_MGMT | \ | |
| NDIS_PACKET_TYPE_802_11_RAW_MGMT | \ | |
| NDIS_PACKET_TYPE_802_11_DIRECTED_CTRL | \ | |
| NDIS_PACKET_TYPE_802_11_BROADCAST_CTRL | \ | |
| NDIS_PACKET_TYPE_802_11_PROMISCUOUS_CTRL) | |
| #endif | |
| static BOOL _set_monitor_mode (ADAPTER *adapter) | |
| { | |
| BOOL rc; | |
| struct { | |
| PACKET_OID_DATA oidData; | |
| DWORD filter; | |
| } oid; | |
| if (!adapter || adapter->Flags != INFO_FLAG_NDIS_ADAPTER) | |
| return (FALSE); | |
| memset(&oid, 0, sizeof(oid)); | |
| oid.oidData.Oid = OID_GEN_CURRENT_PACKET_FILTER; | |
| oid.oidData.Length = sizeof(oid); | |
| oid.filter = NDIS_PACKET_TYPE_PROMISCUOUS | NDIS_PACKET_TYPE_ALL_802_11_FILTERS; | |
| *(DWORD*) &oid.oidData.Data = oid.filter; | |
| rc = PacketRequest(adapter, TRUE, &oid.oidData); | |
| WINDUMP_TRACE (1, "_set_monitor_mode(): filter: 0x%08lX, rc: %d\n", oid.filter, rc); | |
| return (rc); | |
| } | |
| BOOL set_monitor_mode (pcap_t *pcap) | |
| { | |
| return _set_monitor_mode (pcap_get_adapter(pcap)); | |
| } | |
| /* | |
| * Avoid linking with 'iphlpapi.lib'. | |
| */ | |
| typedef ULONG (WINAPI *GetAdaptersAddresses_t) ( | |
| ULONG Family, | |
| ULONG Flags, | |
| VOID *Reserved, | |
| IP_ADAPTER_ADDRESSES *AdapterAddresses, | |
| ULONG *outBufLen); | |
| static GetAdaptersAddresses_t p_GetAdaptersAddresses = NULL; | |
| static IP_ADAPTER_ADDRESSES *addresses = NULL; | |
| static IP_ADAPTER_ADDRESSES *get_adapter_addresses (void) | |
| { | |
| ULONG sz_needed = 0; | |
| ULONG flags = GAA_FLAG_INCLUDE_PREFIX | | |
| GAA_FLAG_INCLUDE_ALL_INTERFACES; | |
| HINSTANCE mod = LoadLibrary ("iphlpapi.dll"); | |
| if (!mod || mod == INVALID_HANDLE_VALUE) | |
| return (NULL); | |
| p_GetAdaptersAddresses = (GetAdaptersAddresses_t) GetProcAddress (mod, "GetAdaptersAddresses"); | |
| /* Make an initial call to GetAdaptersAddresses() to get the size needed. | |
| */ | |
| if ((*p_GetAdaptersAddresses)(AF_UNSPEC, flags, NULL, NULL, &sz_needed) == ERROR_BUFFER_OVERFLOW) | |
| addresses = malloc (sz_needed); | |
| if ((*p_GetAdaptersAddresses)(AF_UNSPEC, flags, NULL, addresses, &sz_needed) == NO_ERROR) | |
| { | |
| IP_ADAPTER_ADDRESSES *save = addresses; | |
| unsigned num; | |
| for (num = 0; addresses; addresses = addresses->Next) | |
| num++; | |
| WINDUMP_TRACE (2, "GetAdaptersAddresses() returned %lu bytes of info for %u adapters.\n", sz_needed, num); | |
| addresses = save; | |
| } | |
| else | |
| addresses = NULL; | |
| FreeLibrary (mod); | |
| return (addresses); | |
| } | |
| static void free_adapter_addresses (void) | |
| { | |
| if (addresses) | |
| free (addresses); | |
| addresses = NULL; | |
| } | |
| static const char *get_addr_common (int num, const address_buf *abuf) | |
| { | |
| char *p = work_buf; | |
| int i; | |
| *p = '\0'; | |
| if (num == 0) | |
| return (NONE_STR); | |
| for (i = 0; i < num; i++) | |
| { | |
| strncat (p, abuf[i], sizeof(abuf[0])-1); | |
| p += strlen (p); | |
| if (i < num - 1) | |
| { | |
| strcat (p, ", "); | |
| p += 2; | |
| } | |
| else | |
| break; | |
| } | |
| return (work_buf); | |
| } | |
| static const char *get_address (int family, const void *addr, char *buf) | |
| { | |
| if (family == AF_INET) | |
| return addrtostr(addr,buf,INET6_ADDRSTRLEN); | |
| if (family == AF_INET6) | |
| return addrtostr6(addr,buf,INET6_ADDRSTRLEN); | |
| return strcpy(buf,"??"); | |
| } | |
| #if 1 | |
| #define GET_ONE_ADDR(addr, i) do { \ | |
| const struct sockaddr_in *sa4 = (const struct sockaddr_in*) addr.lpSockaddr; \ | |
| const struct sockaddr_in6 *sa6 = (const struct sockaddr_in6*) addr.lpSockaddr; \ | |
| const struct in_addr *in4 = &sa4->sin_addr; \ | |
| const struct in6_addr *in6 = &sa6->sin6_addr; \ | |
| get_address (sa4->sin_family, sa4->sin_family == AF_INET ? \ | |
| (const void*)in4 : (const void*)in6, abuf[i]); \ | |
| } while (0) | |
| #else | |
| static DWORD dummy; | |
| #define GET_ONE_ADDR(addr,i) do { \ | |
| dummy = sizeof(abuf[i]), \ | |
| WSAAddressToStringA (addr->lpSockaddr, \ | |
| addr->iSockaddrLength, \ | |
| NULL, abuf[i], &dummy); \ | |
| } while (0) | |
| #endif | |
| #define GET_ADDRESSES(func, type, var) \ | |
| static const char * func (type * var) \ | |
| { \ | |
| address_buf abuf[10]; \ | |
| unsigned i; \ | |
| \ | |
| for (i = 0; var && i < DIM(abuf); i++) { \ | |
| GET_ONE_ADDR (var->Address, i); \ | |
| var = var->Next; \ | |
| } \ | |
| return get_addr_common (i, (const address_buf*)&abuf); \ | |
| } | |
| GET_ADDRESSES (get_unicast_addrs, const IP_ADAPTER_UNICAST_ADDRESS, uca) | |
| GET_ADDRESSES (get_anycast_addrs, const IP_ADAPTER_ANYCAST_ADDRESS, aca) | |
| GET_ADDRESSES (get_multicast_addrs, const IP_ADAPTER_MULTICAST_ADDRESS, mca) | |
| GET_ADDRESSES (get_dns_server_addrs, const IP_ADAPTER_DNS_SERVER_ADDRESS, dns) | |
| #if defined(ON_WIN_VISTA) | |
| #pragma message ("Compiling code for WinVista SP1+ SDK") | |
| GET_ADDRESSES (get_gateway_addrs, const IP_ADAPTER_GATEWAY_ADDRESS, gw) | |
| GET_ADDRESSES (get_wins_addrs, const IP_ADAPTER_WINS_SERVER_ADDRESS, wins) | |
| #else | |
| #pragma message ("NOT compiling code for WinVista SP1+ SDK") | |
| #endif | |
| static const char *wide_string (const wchar_t *in_str, UINT cp) | |
| { | |
| if (WideCharToMultiByte(cp, 0, in_str, -1, work_buf, sizeof(work_buf), NULL, NULL) == 0) | |
| { | |
| work_buf[0] = '?'; | |
| work_buf[1] = '\0'; | |
| } | |
| return (work_buf); | |
| } | |
| static const char *wstring_utf8 (const wchar_t *in_str) | |
| { | |
| return wide_string (in_str, CP_UTF8); | |
| } | |
| /** | |
| * Return a number with suffix for a link-speed 32-bit value. | |
| */ | |
| static const char *speed_string (DWORD val) | |
| { | |
| char suffix = '\0'; | |
| double fl_val; | |
| if (val == 0UL) | |
| return strcpy (work_buf, "0 B/s"); | |
| fl_val = (double) (val+1); | |
| if (fl_val >= 1E9) | |
| { | |
| suffix = 'G'; | |
| fl_val /= 1E9; | |
| } | |
| else if (fl_val >= 1E6) | |
| { | |
| suffix = 'M'; | |
| fl_val /= 1E6; | |
| } | |
| else if (fl_val >= 1E3) | |
| { | |
| suffix = 'k'; | |
| fl_val /= 1E3; | |
| } | |
| sprintf (work_buf, "%.0f %cB/s", fl_val, suffix); | |
| return (work_buf); | |
| } | |
| /** | |
| * Return a number with suffix for a link-speed of a 64-bit value. | |
| */ | |
| static const char *speed64_string (ULONG64 val) | |
| { | |
| char suffix = '\0'; | |
| double fl_val; | |
| if (val <= 1000000000ULL) | |
| return speed_string ((DWORD)val); | |
| fl_val = (double) (val+1); | |
| if (fl_val >= 1E12) | |
| { | |
| suffix = 'T'; | |
| fl_val /= 1E12; | |
| } | |
| else if (fl_val >= 1E9) | |
| { | |
| suffix = 'G'; | |
| fl_val /= 1E9; | |
| } | |
| sprintf (work_buf, "%.0f %cB/s", fl_val, suffix); | |
| return (work_buf); | |
| } | |
| static const struct tok if_types[] = { | |
| { IF_TYPE_OTHER, "Other type" }, | |
| { IF_TYPE_ETHERNET_CSMACD, "Ethernet" }, | |
| { IF_TYPE_ISO88025_TOKENRING, "Token Ring" }, | |
| { IF_TYPE_FDDI, "FDDI" }, | |
| { IF_TYPE_PPP, "Point-to-Point" }, | |
| { IF_TYPE_SOFTWARE_LOOPBACK, "Loopback" }, | |
| { IF_TYPE_ATM, "ATM" }, | |
| { IF_TYPE_IEEE80211, "IEEE 802.11 wireless" }, | |
| { IF_TYPE_TUNNEL, "Tunnel" }, | |
| { IF_TYPE_IEEE1394, "IEEE 1394 (Firewire)" }, | |
| { IF_TYPE_IEEE80216_WMAN, "WiMax broadband" }, | |
| { IF_TYPE_WWANPP, "GSM mobile" }, | |
| { IF_TYPE_WWANPP2, "CDMA mobile" }, | |
| { 0, NULL } | |
| }; | |
| static const struct tok oper_status[] = { | |
| { IfOperStatusUp, "Up" }, | |
| { IfOperStatusDown, "Down" }, | |
| { IfOperStatusTesting, "Testing" }, | |
| { IfOperStatusUnknown, "Unknown" }, | |
| { IfOperStatusDormant, "Dormant" }, | |
| { IfOperStatusNotPresent, "Not present" }, | |
| { IfOperStatusLowerLayerDown, "Lower layer down" }, | |
| { 0, NULL } | |
| }; | |
| static const char *get_mac_addr (netdissect_options *ndo, const void *mac, size_t size) | |
| { | |
| static char buf [100]; | |
| const char *str = NULL; | |
| const char *a = (const char*) mac; | |
| str = linkaddr_string (ndo, (const u_char*)mac, LINKADDR_ETHER, size); | |
| if (str && strlen(str) == 3*6-1 && str[2] == ':') | |
| return (str); | |
| snprintf (buf, sizeof(buf), "%s (%02X:%02X:%02X:%02X:%02X:%02X)", | |
| str, a[0] & 255, a[1] & 255, a[2] & 255, a[3] & 255, a[4] & 255, a[5] & 255); | |
| return (buf); | |
| } | |
| void | |
| show_iphlapi_details (netdissect_options *ndo, const IP_ADAPTER_ADDRESSES *iface, const char *pcap_name) | |
| { | |
| address_buf abuf[1]; | |
| char err_buf[PCAP_ERRBUF_SIZE+1]; | |
| pcap_t *p; | |
| printf (" Unicast Addr: %s\n", get_unicast_addrs(iface->FirstUnicastAddress)); | |
| printf (" Anycast Addr: %s\n", get_anycast_addrs(iface->FirstAnycastAddress)); | |
| printf (" Multicast Addr: %s\n", get_multicast_addrs(iface->FirstMulticastAddress)); | |
| printf (" DNS Servers: %s\n", get_dns_server_addrs(iface->FirstDnsServerAddress)); | |
| printf (" IfType: %s (%lu)\n", | |
| tok2str(if_types, "%lu?", iface->IfType), (u_long)iface->IfType); | |
| printf (" OperStatus: %s (%u)\n", | |
| tok2str(oper_status, "%lu?", iface->OperStatus), iface->OperStatus); | |
| #if 0 | |
| if (!strncmp(pcap_name, "\\Device\\NPF_", sizeof("\\Device\\NPF_")-1) && | |
| (p = pcap_open_live (pcap_name, 1500, PCAP_OPENFLAG_PROMISCUOUS, 1, err_buf)) != NULL) | |
| { | |
| NET_IF_OPER_STATUS oper_status = (NET_IF_OPER_STATUS) -1; | |
| wchar_t friendly_name [100] = { L'\0' }; | |
| size_t size = sizeof(oper_status); | |
| int status; | |
| /* Does not work since WinPcap uses NDIS 5 and OID_GEN_OPERATIONAL_STATUS is a | |
| * NDIS 6+ function | |
| */ | |
| status = pcap_oid_get_request (p, OID_GEN_OPERATIONAL_STATUS, &oper_status, &size); | |
| if (status == 0 || size != sizeof(oper_status)) | |
| printf (" oper_status: %d\n", oper_status); | |
| else printf (" Error: %s\n", pcap_geterr(p)); | |
| size = DIM(friendly_name); | |
| status = pcap_oid_get_request (p, OID_GEN_FRIENDLY_NAME, friendly_name, &size); | |
| if (status == 0) | |
| printf (" friendly_name: %S\n", friendly_name); | |
| else printf (" Error: %s\n", pcap_geterr(p)); | |
| pcap_close (p); | |
| } | |
| #endif | |
| printf (" MAC address: %s\n", | |
| get_mac_addr(ndo, &iface->PhysicalAddress, iface->PhysicalAddressLength)); | |
| printf (" MTU: %lu\n", iface->Mtu); | |
| #if defined(ON_WIN_VISTA) | |
| printf (" Tx speed: %s\n", speed64_string(iface->TransmitLinkSpeed)); | |
| printf (" Rx speed: %s\n", speed64_string(iface->ReceiveLinkSpeed)); | |
| printf (" WINS servers: %s\n", get_wins_addrs(iface->FirstWinsServerAddress)); | |
| printf (" Gateways: %s\n", get_gateway_addrs(iface->FirstGatewayAddress)); | |
| if (iface->Flags & IP_ADAPTER_IPV4_ENABLED) | |
| { | |
| printf (" IPv4 metric: %lu\n", iface->Ipv4Metric); | |
| if (iface->Flags & IP_ADAPTER_DHCP_ENABLED) { | |
| if (iface->Dhcpv4Server.iSockaddrLength == 0) | |
| strcpy (abuf[0], NONE_STR); | |
| else | |
| GET_ONE_ADDR (&iface->Dhcpv4Server, 0); | |
| printf (" DHCP v4 addr: %s\n", abuf[0]); | |
| } | |
| } | |
| if (iface->Flags & IP_ADAPTER_IPV6_ENABLED) | |
| { | |
| printf (" IPv6 metric: %lu\n", iface->Ipv6Metric); | |
| if (iface->Flags & IP_ADAPTER_DHCP_ENABLED) { | |
| if (iface->Dhcpv6Server.iSockaddrLength == 0) | |
| strcpy (abuf[0], NONE_STR); | |
| else | |
| GET_ONE_ADDR (&iface->Dhcpv6Server, 0); | |
| printf (" DHCP v6 addr: %s\n", abuf[0]); | |
| } | |
| } | |
| #endif | |
| } | |
| extern const struct tok status_flags[]; /* in tcpdump.c */ | |
| void | |
| show_iface_details (netdissect_options *ndo, pcap_if_t *dev) | |
| { | |
| const IP_ADAPTER_ADDRESSES *iface; | |
| const char *device = dev->name; | |
| const char *lpar = strchr (device, '{'); | |
| const char *guid; | |
| bpf_u_int32 pcap_flags = dev->flags; | |
| static BOOL done = FALSE; | |
| if (!done) | |
| { | |
| addresses = get_adapter_addresses(); | |
| atexit (free_adapter_addresses); | |
| done = TRUE; | |
| } | |
| if (!lpar) | |
| { | |
| WINDUMP_TRACE (2, "device: '%s' doesn't have a GUID.\n", device); | |
| show_description (ndo, NULL, dev); | |
| show_link_details (ndo, device); | |
| return; | |
| } | |
| for (iface = addresses; iface; iface = iface->Next) | |
| { | |
| guid = iface->AdapterName; | |
| if (!strcmp(lpar,guid)) | |
| { | |
| show_description (ndo, iface, NULL); | |
| show_iphlapi_details (ndo, iface, dev->name); | |
| show_link_details (ndo, device); | |
| break; /* since only 1 'dev' can match only 1 'iface' */ | |
| } | |
| } | |
| } | |
| #if defined(HAVE_AIRPCAP_API) | |
| static void | |
| show_airpcap_details (netdissect_options *ndo, AirpcapHandle *ap_hnd) | |
| { | |
| static const struct tok crypt_state[] = { | |
| { AIRPCAP_DECRYPTION_ON, "ON" }, | |
| { AIRPCAP_DECRYPTION_OFF, "OFF" }, | |
| { 0, NULL } | |
| }; | |
| static const struct tok link_type[] = { | |
| { AIRPCAP_LT_802_11, "AIRPCAP_LT_802_11" }, | |
| { AIRPCAP_LT_802_11_PLUS_RADIO, "AIRPCAP_LT_802_11_PLUS_RADIO" }, | |
| { AIRPCAP_LT_802_11_PLUS_PPI, "AIRPCAP_LT_802_11_PLUS_PPI" }, | |
| { 0, NULL } | |
| }; | |
| AirpcapDecryptionState crypt; | |
| AirpcapLinkType linkType; | |
| AirpcapMacAddress macAddr; | |
| printf(" MAC address: "); | |
| if (AirpcapGetMacAddress(ap_hnd, &macAddr)) | |
| printf("%s\n", get_mac_addr(ndo, &macAddr, sizeof(macAddr))); | |
| else | |
| printf("<failed>\n"); | |
| printf(" Link type: "); | |
| if (AirpcapGetLinkType(ap_hnd, &linkType)) | |
| printf ("%s\n", tok2str(link_type,"%d?",linkType)); | |
| else | |
| printf ("<failed>\n"); | |
| printf(" Encryption: "); | |
| if (AirpcapGetDriverDecryptionState(ap_hnd,&crypt)) | |
| printf ("%s", tok2str(crypt_state,"%d?",crypt)); | |
| else | |
| printf ("<failed>"); | |
| print_airpcap_capab(ap_hnd); | |
| puts(""); | |
| print_airpcap_mode(ap_hnd); | |
| puts(""); | |
| print_airpcap_validation(ap_hnd); | |
| puts(""); | |
| print_airpcap_channel_info(ap_hnd); | |
| } | |
| #endif /* HAVE_AIRPCAP_API */ | |
| static void | |
| show_link_details (netdissect_options *ndo, const char *device) | |
| { | |
| static const struct tok phys_media[] = { | |
| { ND_PHY_Unspecified, "Unspecified" }, | |
| { ND_PHY_WirelessLan, "Wireless LAN" }, | |
| { ND_PHY_CableModem, "Cable" }, | |
| { ND_PHY_PhoneLine, "Phone" }, | |
| { ND_PHY_PowerLine, "PowerLine" }, | |
| { ND_PHY_DSL, "DSL" }, | |
| { ND_PHY_FibreChannel, "Fibre" }, | |
| { ND_PHY_1394, "IEEE1394" }, | |
| { ND_PHY_WirelessWan, "Wireless WAN" }, | |
| { ND_PHY_Native802_11, "Native802_11" }, | |
| { ND_PHY_Bluetooth, "Bluetooth" }, | |
| { ND_PHY_Infiniband, "Infiniband" }, | |
| { ND_PHY_WiMax, "WiMax" }, | |
| { ND_PHY_UWB, "UWB" }, | |
| { ND_PHY_802_3, "802_3" }, | |
| { ND_PHY_802_5, "802_5" }, | |
| { ND_PHY_Irda, "Irda" }, | |
| { ND_PHY_WiredWAN, "WiredWAN" }, | |
| { ND_PHY_WiredCoWan, "WiredCoWan" }, | |
| { 0, NULL } | |
| }; | |
| static const struct tok adapter_flg[] = { | |
| { INFO_FLAG_NDIS_ADAPTER, "NDIS" }, | |
| { INFO_FLAG_NDISWAN_ADAPTER, "NDIS-Wan" }, | |
| { INFO_FLAG_DAG_CARD, "DAG adapter" }, | |
| { INFO_FLAG_DAG_FILE, "DAG adapter" }, | |
| { INFO_FLAG_DONT_EXPORT, "No export" }, | |
| { INFO_FLAG_AIRPCAP_CARD, "AirPcap" }, | |
| { INFO_FLAG_NPFIM_DEVICE, "NpfIm" }, | |
| { 0, NULL } | |
| }; | |
| pcap_t *pcap; | |
| ADAPTER *adapter = open_adapter (device, &pcap); | |
| int verbose = ndo->ndo_vflag; | |
| if (!adapter || !pcap) | |
| return; | |
| printf(" Adapter Flag: %s\n", tok2str(adapter_flg, "%d?", adapter->Flags)); | |
| #if defined(HAVE_AIRPCAP_API) | |
| if (adapter->Flags == INFO_FLAG_AIRPCAP_CARD) | |
| { | |
| AirpcapHandle *ap_hnd = PacketGetAirPcapHandle(adapter); | |
| if (ap_hnd) | |
| { | |
| show_airpcap_details (ndo, ap_hnd); | |
| if (verbose > 1) | |
| supported_OID_list (NULL, ap_hnd->OsHandle); | |
| } | |
| } | |
| else | |
| #endif | |
| { | |
| int link_state = -1; | |
| int media = -1; | |
| const char *ver_info; | |
| printf(" Phys media: "); | |
| if (get_real_media(adapter,&media)) | |
| printf("%s\n", tok2str(phys_media, "%d?", media)); | |
| else | |
| printf("<failed>\n"); | |
| printf(" Link state: "); | |
| if (get_link_state(adapter,&link_state)) | |
| printf("%s\n", link_state == 0 ? "Up" : link_state == 1 ? "Down" : "Unknown"); | |
| else | |
| printf("<failed>\n"); | |
| printf(" Driver ver: "); | |
| if (get_driver_version(adapter,&ver_info)) | |
| printf("%s\n", ver_info); | |
| else | |
| printf("<failed>\n"); | |
| printf(" NDIS ver: "); | |
| if (get_NDIS_driver_version(adapter,&ver_info)) | |
| printf("%s\n", ver_info); | |
| else | |
| printf("<failed>\n"); | |
| if (media == ND_PHY_Native802_11) | |
| printf(" Monitor mode: %s\n", _set_monitor_mode(adapter) ? "Yes" : "No"); | |
| if (verbose > 1) | |
| supported_OID_list (adapter, NULL); | |
| } | |
| pcap_close (pcap); | |
| } | |
| #define ADD_VAL(x) { x, #x } | |
| static const struct tok oid_vals[] = { | |
| ADD_VAL (OID_GEN_SUPPORTED_LIST), | |
| ADD_VAL (OID_GEN_HARDWARE_STATUS), | |
| ADD_VAL (OID_GEN_MEDIA_SUPPORTED), | |
| ADD_VAL (OID_GEN_MEDIA_IN_USE), | |
| ADD_VAL (OID_GEN_MAXIMUM_LOOKAHEAD), | |
| ADD_VAL (OID_GEN_MAXIMUM_FRAME_SIZE), | |
| ADD_VAL (OID_GEN_LINK_SPEED), | |
| ADD_VAL (OID_GEN_TRANSMIT_BUFFER_SPACE), | |
| ADD_VAL (OID_GEN_RECEIVE_BUFFER_SPACE), | |
| ADD_VAL (OID_GEN_TRANSMIT_BLOCK_SIZE), | |
| ADD_VAL (OID_GEN_RECEIVE_BLOCK_SIZE), | |
| ADD_VAL (OID_GEN_VENDOR_ID), | |
| ADD_VAL (OID_GEN_VENDOR_DESCRIPTION), | |
| ADD_VAL (OID_GEN_CURRENT_PACKET_FILTER), | |
| ADD_VAL (OID_GEN_CURRENT_LOOKAHEAD), | |
| ADD_VAL (OID_GEN_DRIVER_VERSION), | |
| ADD_VAL (OID_GEN_MAXIMUM_TOTAL_SIZE), | |
| ADD_VAL (OID_GEN_PROTOCOL_OPTIONS), | |
| ADD_VAL (OID_GEN_MAC_OPTIONS), | |
| ADD_VAL (OID_GEN_MEDIA_CONNECT_STATUS), | |
| ADD_VAL (OID_GEN_MAXIMUM_SEND_PACKETS), | |
| ADD_VAL (OID_GEN_VENDOR_DRIVER_VERSION), | |
| ADD_VAL (OID_GEN_XMIT_OK), | |
| ADD_VAL (OID_GEN_RCV_OK), | |
| ADD_VAL (OID_GEN_XMIT_ERROR), | |
| ADD_VAL (OID_GEN_RCV_ERROR), | |
| ADD_VAL (OID_GEN_RCV_NO_BUFFER), | |
| ADD_VAL (OID_GEN_DIRECTED_BYTES_XMIT), | |
| ADD_VAL (OID_GEN_DIRECTED_FRAMES_XMIT), | |
| ADD_VAL (OID_GEN_MULTICAST_BYTES_XMIT), | |
| ADD_VAL (OID_GEN_MULTICAST_FRAMES_XMIT), | |
| ADD_VAL (OID_GEN_BROADCAST_BYTES_XMIT), | |
| ADD_VAL (OID_GEN_BROADCAST_FRAMES_XMIT), | |
| ADD_VAL (OID_GEN_DIRECTED_BYTES_RCV), | |
| ADD_VAL (OID_GEN_DIRECTED_FRAMES_RCV), | |
| ADD_VAL (OID_GEN_MULTICAST_BYTES_RCV), | |
| ADD_VAL (OID_GEN_MULTICAST_FRAMES_RCV), | |
| ADD_VAL (OID_GEN_BROADCAST_BYTES_RCV), | |
| ADD_VAL (OID_GEN_BROADCAST_FRAMES_RCV), | |
| ADD_VAL (OID_GEN_RCV_CRC_ERROR), | |
| ADD_VAL (OID_GEN_TRANSMIT_QUEUE_LENGTH), | |
| ADD_VAL (OID_GEN_GET_TIME_CAPS), | |
| ADD_VAL (OID_GEN_GET_NETCARD_TIME), | |
| ADD_VAL (OID_GEN_PHYSICAL_MEDIUM), | |
| ADD_VAL (OID_GEN_VLAN_ID), | |
| ADD_VAL (OID_GEN_MEDIA_CAPABILITIES), | |
| ADD_VAL (OID_GEN_NETWORK_LAYER_ADDRESSES), | |
| ADD_VAL (OID_GEN_TRANSPORT_HEADER_OFFSET), | |
| ADD_VAL (OID_GEN_ISOLATION_PARAMETERS), | |
| ADD_VAL (OID_GEN_SUPPORTED_GUIDS), | |
| ADD_VAL (OID_GEN_NETWORK_LAYER_ADDRESSES), | |
| ADD_VAL (OID_GEN_TRANSPORT_HEADER_OFFSET), | |
| ADD_VAL (OID_GEN_MEDIA_CAPABILITIES), | |
| ADD_VAL (OID_GEN_PHYSICAL_MEDIUM), | |
| ADD_VAL (OID_GEN_RECEIVE_SCALE_CAPABILITIES), | |
| ADD_VAL (OID_GEN_RECEIVE_SCALE_PARAMETERS), | |
| ADD_VAL (OID_GEN_MAC_ADDRESS), | |
| ADD_VAL (OID_GEN_MAX_LINK_SPEED), | |
| ADD_VAL (OID_GEN_LINK_STATE), | |
| ADD_VAL (OID_GEN_LINK_PARAMETERS), | |
| ADD_VAL (OID_GEN_INTERRUPT_MODERATION), | |
| ADD_VAL (OID_GEN_NDIS_RESERVED_1), | |
| ADD_VAL (OID_GEN_NDIS_RESERVED_2), | |
| ADD_VAL (OID_GEN_NDIS_RESERVED_3), | |
| ADD_VAL (OID_GEN_NDIS_RESERVED_4), | |
| ADD_VAL (OID_GEN_NDIS_RESERVED_5), | |
| ADD_VAL (OID_GEN_NDIS_RESERVED_6), | |
| ADD_VAL (OID_GEN_NDIS_RESERVED_7), | |
| ADD_VAL (OID_GEN_ENUMERATE_PORTS), | |
| ADD_VAL (OID_GEN_RESET_COUNTS), | |
| ADD_VAL (OID_GEN_MEDIA_SENSE_COUNTS), | |
| ADD_VAL (OID_GEN_FRIENDLY_NAME), | |
| ADD_VAL (OID_GEN_PORT_STATE), | |
| ADD_VAL (OID_GEN_PORT_AUTHENTICATION_PARAMETERS), | |
| ADD_VAL (OID_GEN_TIMEOUT_DPC_REQUEST_CAPABILITIES), | |
| ADD_VAL (OID_GEN_PCI_DEVICE_CUSTOM_PROPERTIES), | |
| ADD_VAL (OID_GEN_PHYSICAL_MEDIUM_EX), | |
| ADD_VAL (OID_GEN_MACHINE_NAME), | |
| ADD_VAL (OID_GEN_RNDIS_CONFIG_PARAMETER), | |
| ADD_VAL (OID_GEN_VLAN_ID), | |
| ADD_VAL (OID_GEN_RECEIVE_HASH), | |
| ADD_VAL (OID_GEN_MINIPORT_RESTART_ATTRIBUTES), | |
| ADD_VAL (OID_GEN_HD_SPLIT_PARAMETERS), | |
| ADD_VAL (OID_GEN_HD_SPLIT_CURRENT_CONFIG), | |
| ADD_VAL (OID_GEN_PROMISCUOUS_MODE), | |
| ADD_VAL (OID_GEN_LAST_CHANGE), | |
| ADD_VAL (OID_GEN_DISCONTINUITY_TIME), | |
| ADD_VAL (OID_GEN_OPERATIONAL_STATUS), | |
| ADD_VAL (OID_GEN_XMIT_LINK_SPEED), | |
| ADD_VAL (OID_GEN_RCV_LINK_SPEED), | |
| ADD_VAL (OID_GEN_UNKNOWN_PROTOS), | |
| ADD_VAL (OID_GEN_INTERFACE_INFO), | |
| ADD_VAL (OID_GEN_ADMIN_STATUS), | |
| ADD_VAL (OID_GEN_ALIAS), | |
| ADD_VAL (OID_GEN_MEDIA_CONNECT_STATUS_EX), | |
| ADD_VAL (OID_GEN_LINK_SPEED_EX), | |
| ADD_VAL (OID_GEN_MEDIA_DUPLEX_STATE), | |
| ADD_VAL (OID_GEN_IP_OPER_STATUS), | |
| ADD_VAL (OID_GEN_INIT_TIME_MS), | |
| ADD_VAL (OID_GEN_BYTES_RCV), | |
| ADD_VAL (OID_GEN_BYTES_XMIT), | |
| ADD_VAL (OID_GEN_RCV_DISCARDS), | |
| ADD_VAL (OID_GEN_XMIT_DISCARDS), | |
| ADD_VAL (OID_GEN_STATISTICS), | |
| ADD_VAL (OID_TCP_RSC_STATISTICS), | |
| ADD_VAL (OID_CO_ADD_PVC), | |
| ADD_VAL (OID_CO_DELETE_PVC), | |
| ADD_VAL (OID_CO_GET_CALL_INFORMATION), | |
| ADD_VAL (OID_CO_ADD_ADDRESS), | |
| ADD_VAL (OID_CO_DELETE_ADDRESS), | |
| ADD_VAL (OID_CO_GET_ADDRESSES), | |
| ADD_VAL (OID_CO_ADDRESS_CHANGE), | |
| ADD_VAL (OID_CO_SIGNALING_ENABLED), | |
| ADD_VAL (OID_CO_SIGNALING_DISABLED), | |
| ADD_VAL (OID_CO_AF_CLOSE), | |
| ADD_VAL (OID_CO_TAPI_CM_CAPS), | |
| ADD_VAL (OID_CO_TAPI_LINE_CAPS), | |
| ADD_VAL (OID_CO_TAPI_ADDRESS_CAPS), | |
| ADD_VAL (OID_CO_TAPI_TRANSLATE_TAPI_CALLPARAMS), | |
| ADD_VAL (OID_CO_TAPI_TRANSLATE_NDIS_CALLPARAMS), | |
| ADD_VAL (OID_CO_TAPI_TRANSLATE_TAPI_SAP), | |
| ADD_VAL (OID_CO_TAPI_GET_CALL_DIAGNOSTICS), | |
| ADD_VAL (OID_CO_TAPI_REPORT_DIGITS), | |
| ADD_VAL (OID_CO_TAPI_DONT_REPORT_DIGITS), | |
| ADD_VAL (OID_802_3_PERMANENT_ADDRESS), | |
| ADD_VAL (OID_802_3_CURRENT_ADDRESS), | |
| ADD_VAL (OID_802_3_MAXIMUM_LIST_SIZE), | |
| ADD_VAL (OID_802_3_MULTICAST_LIST), | |
| ADD_VAL (OID_802_3_MAC_OPTIONS), | |
| ADD_VAL (OID_802_3_RCV_ERROR_ALIGNMENT), | |
| ADD_VAL (OID_802_3_XMIT_ONE_COLLISION), | |
| ADD_VAL (OID_802_3_XMIT_MORE_COLLISIONS), | |
| ADD_VAL (OID_802_3_XMIT_DEFERRED), | |
| ADD_VAL (OID_802_3_XMIT_MAX_COLLISIONS), | |
| ADD_VAL (OID_802_3_RCV_OVERRUN), | |
| ADD_VAL (OID_802_3_XMIT_UNDERRUN), | |
| ADD_VAL (OID_802_3_XMIT_HEARTBEAT_FAILURE), | |
| ADD_VAL (OID_802_3_XMIT_TIMES_CRS_LOST), | |
| ADD_VAL (OID_802_3_XMIT_LATE_COLLISIONS), | |
| ADD_VAL (OID_802_3_ADD_MULTICAST_ADDRESS), | |
| ADD_VAL (OID_802_3_DELETE_MULTICAST_ADDRESS), | |
| ADD_VAL (OID_802_11_BSSID), | |
| ADD_VAL (OID_802_11_SSID), | |
| ADD_VAL (OID_802_11_NETWORK_TYPES_SUPPORTED), | |
| ADD_VAL (OID_802_11_NETWORK_TYPE_IN_USE), | |
| ADD_VAL (OID_802_11_TX_POWER_LEVEL), | |
| ADD_VAL (OID_802_11_RSSI), | |
| ADD_VAL (OID_802_11_RSSI_TRIGGER), | |
| ADD_VAL (OID_802_11_INFRASTRUCTURE_MODE), | |
| ADD_VAL (OID_802_11_FRAGMENTATION_THRESHOLD), | |
| ADD_VAL (OID_802_11_RTS_THRESHOLD), | |
| ADD_VAL (OID_802_11_NUMBER_OF_ANTENNAS), | |
| ADD_VAL (OID_802_11_RX_ANTENNA_SELECTED), | |
| ADD_VAL (OID_802_11_TX_ANTENNA_SELECTED), | |
| ADD_VAL (OID_802_11_SUPPORTED_RATES), | |
| ADD_VAL (OID_802_11_DESIRED_RATES), | |
| ADD_VAL (OID_802_11_CONFIGURATION), | |
| ADD_VAL (OID_802_11_STATISTICS), | |
| ADD_VAL (OID_802_11_ADD_WEP), | |
| ADD_VAL (OID_802_11_REMOVE_WEP), | |
| ADD_VAL (OID_802_11_DISASSOCIATE), | |
| ADD_VAL (OID_802_11_POWER_MODE), | |
| ADD_VAL (OID_802_11_BSSID_LIST), | |
| ADD_VAL (OID_802_11_AUTHENTICATION_MODE), | |
| ADD_VAL (OID_802_11_PRIVACY_FILTER), | |
| ADD_VAL (OID_802_11_BSSID_LIST_SCAN), | |
| ADD_VAL (OID_802_11_WEP_STATUS), | |
| ADD_VAL (OID_802_11_ENCRYPTION_STATUS), | |
| ADD_VAL (OID_802_11_RELOAD_DEFAULTS), | |
| ADD_VAL (OID_802_11_ADD_KEY), | |
| ADD_VAL (OID_802_11_REMOVE_KEY), | |
| ADD_VAL (OID_802_11_ASSOCIATION_INFORMATION), | |
| ADD_VAL (OID_802_11_TEST), | |
| ADD_VAL (OID_802_11_CAPABILITY), | |
| ADD_VAL (OID_802_11_PMKID), | |
| ADD_VAL (OID_802_5_PERMANENT_ADDRESS), | |
| ADD_VAL (OID_802_5_CURRENT_ADDRESS), | |
| ADD_VAL (OID_802_5_CURRENT_FUNCTIONAL), | |
| ADD_VAL (OID_802_5_CURRENT_GROUP), | |
| ADD_VAL (OID_802_5_LAST_OPEN_STATUS), | |
| ADD_VAL (OID_802_5_CURRENT_RING_STATUS), | |
| ADD_VAL (OID_802_5_CURRENT_RING_STATE), | |
| ADD_VAL (OID_802_5_LINE_ERRORS), | |
| ADD_VAL (OID_802_5_LOST_FRAMES), | |
| ADD_VAL (OID_FDDI_LONG_PERMANENT_ADDR), | |
| ADD_VAL (OID_FDDI_LONG_CURRENT_ADDR), | |
| ADD_VAL (OID_FDDI_LONG_MULTICAST_LIST), | |
| ADD_VAL (OID_FDDI_LONG_MAX_LIST_SIZE), | |
| ADD_VAL (OID_FDDI_SHORT_PERMANENT_ADDR), | |
| ADD_VAL (OID_FDDI_SHORT_CURRENT_ADDR), | |
| ADD_VAL (OID_FDDI_SHORT_MULTICAST_LIST), | |
| ADD_VAL (OID_FDDI_SHORT_MAX_LIST_SIZE), | |
| ADD_VAL (OID_LTALK_CURRENT_NODE_ID), | |
| ADD_VAL (OID_ARCNET_PERMANENT_ADDRESS), | |
| ADD_VAL (OID_ARCNET_CURRENT_ADDRESS), | |
| ADD_VAL (OID_TCP_TASK_OFFLOAD), | |
| ADD_VAL (OID_TCP_OFFLOAD_CURRENT_CONFIG), | |
| ADD_VAL (OID_TCP_OFFLOAD_PARAMETERS), | |
| ADD_VAL (OID_TCP_OFFLOAD_HARDWARE_CAPABILITIES), | |
| ADD_VAL (OID_TCP_CONNECTION_OFFLOAD_CURRENT_CONFIG), | |
| ADD_VAL (OID_TCP_CONNECTION_OFFLOAD_HARDWARE_CAPABILITIES), | |
| ADD_VAL (OID_OFFLOAD_ENCAPSULATION), | |
| ADD_VAL (OID_PNP_CAPABILITIES), | |
| ADD_VAL (OID_PNP_SET_POWER), | |
| ADD_VAL (OID_PNP_QUERY_POWER), | |
| ADD_VAL (OID_PNP_ADD_WAKE_UP_PATTERN), | |
| ADD_VAL (OID_PNP_REMOVE_WAKE_UP_PATTERN), | |
| ADD_VAL (OID_PNP_WAKE_UP_PATTERN_LIST), | |
| ADD_VAL (OID_PNP_ENABLE_WAKE_UP), | |
| ADD_VAL (OID_PM_CURRENT_CAPABILITIES), | |
| ADD_VAL (OID_PM_HARDWARE_CAPABILITIES), | |
| ADD_VAL (OID_PM_PARAMETERS), | |
| ADD_VAL (OID_PM_ADD_WOL_PATTERN), | |
| ADD_VAL (OID_PM_REMOVE_WOL_PATTERN), | |
| ADD_VAL (OID_PM_WOL_PATTERN_LIST), | |
| ADD_VAL (OID_PM_ADD_PROTOCOL_OFFLOAD), | |
| ADD_VAL (OID_PM_GET_PROTOCOL_OFFLOAD), | |
| ADD_VAL (OID_PM_REMOVE_PROTOCOL_OFFLOAD), | |
| ADD_VAL (OID_PM_PROTOCOL_OFFLOAD_LIST), | |
| ADD_VAL (OID_PM_RESERVED_1), | |
| ADD_VAL (OID_RECEIVE_FILTER_HARDWARE_CAPABILITIES), | |
| ADD_VAL (OID_RECEIVE_FILTER_GLOBAL_PARAMETERS), | |
| ADD_VAL (OID_RECEIVE_FILTER_ALLOCATE_QUEUE), | |
| ADD_VAL (OID_RECEIVE_FILTER_FREE_QUEUE), | |
| ADD_VAL (OID_RECEIVE_FILTER_ENUM_QUEUES), | |
| ADD_VAL (OID_RECEIVE_FILTER_QUEUE_PARAMETERS), | |
| ADD_VAL (OID_RECEIVE_FILTER_SET_FILTER), | |
| ADD_VAL (OID_RECEIVE_FILTER_CLEAR_FILTER), | |
| ADD_VAL (OID_RECEIVE_FILTER_ENUM_FILTERS), | |
| ADD_VAL (OID_RECEIVE_FILTER_PARAMETERS), | |
| ADD_VAL (OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE), | |
| ADD_VAL (OID_RECEIVE_FILTER_CURRENT_CAPABILITIES), | |
| ADD_VAL (OID_NIC_SWITCH_HARDWARE_CAPABILITIES), | |
| ADD_VAL (OID_NIC_SWITCH_CURRENT_CAPABILITIES), | |
| ADD_VAL (OID_RECEIVE_FILTER_MOVE_FILTER), | |
| ADD_VAL (OID_VLAN_RESERVED1), | |
| ADD_VAL (OID_VLAN_RESERVED2), | |
| ADD_VAL (OID_VLAN_RESERVED3), | |
| ADD_VAL (OID_VLAN_RESERVED4), | |
| ADD_VAL (OID_PACKET_COALESCING_FILTER_MATCH_COUNT), | |
| ADD_VAL (OID_NIC_SWITCH_CREATE_SWITCH), | |
| ADD_VAL (OID_NIC_SWITCH_PARAMETERS), | |
| ADD_VAL (OID_NIC_SWITCH_DELETE_SWITCH), | |
| ADD_VAL (OID_NIC_SWITCH_ENUM_SWITCHES), | |
| ADD_VAL (OID_NIC_SWITCH_CREATE_VPORT), | |
| ADD_VAL (OID_NIC_SWITCH_VPORT_PARAMETERS), | |
| ADD_VAL (OID_NIC_SWITCH_ENUM_VPORTS), | |
| ADD_VAL (OID_NIC_SWITCH_DELETE_VPORT), | |
| ADD_VAL (OID_NIC_SWITCH_ALLOCATE_VF), | |
| ADD_VAL (OID_NIC_SWITCH_FREE_VF), | |
| ADD_VAL (OID_NIC_SWITCH_VF_PARAMETERS), | |
| ADD_VAL (OID_NIC_SWITCH_ENUM_VFS), | |
| ADD_VAL (OID_SRIOV_HARDWARE_CAPABILITIES), | |
| ADD_VAL (OID_SRIOV_CURRENT_CAPABILITIES), | |
| ADD_VAL (OID_SRIOV_READ_VF_CONFIG_SPACE), | |
| ADD_VAL (OID_SRIOV_WRITE_VF_CONFIG_SPACE), | |
| ADD_VAL (OID_SRIOV_READ_VF_CONFIG_BLOCK), | |
| ADD_VAL (OID_SRIOV_WRITE_VF_CONFIG_BLOCK), | |
| ADD_VAL (OID_SRIOV_RESET_VF), | |
| ADD_VAL (OID_SRIOV_SET_VF_POWER_STATE), | |
| ADD_VAL (OID_SRIOV_VF_VENDOR_DEVICE_ID), | |
| ADD_VAL (OID_SRIOV_PROBED_BARS), | |
| ADD_VAL (OID_SRIOV_BAR_RESOURCES), | |
| ADD_VAL (OID_SRIOV_PF_LUID), | |
| ADD_VAL (OID_SRIOV_CONFIG_STATE), | |
| ADD_VAL (OID_SRIOV_VF_SERIAL_NUMBER), | |
| ADD_VAL (OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK), | |
| ADD_VAL (OID_SWITCH_PROPERTY_ADD), | |
| ADD_VAL (OID_SWITCH_PROPERTY_UPDATE), | |
| ADD_VAL (OID_SWITCH_PROPERTY_DELETE), | |
| ADD_VAL (OID_SWITCH_PROPERTY_ENUM), | |
| ADD_VAL (OID_SWITCH_FEATURE_STATUS_QUERY), | |
| ADD_VAL (OID_SWITCH_NIC_REQUEST), | |
| ADD_VAL (OID_SWITCH_PORT_PROPERTY_ADD), | |
| ADD_VAL (OID_SWITCH_PORT_PROPERTY_UPDATE), | |
| ADD_VAL (OID_SWITCH_PORT_PROPERTY_DELETE), | |
| ADD_VAL (OID_SWITCH_PORT_PROPERTY_ENUM), | |
| ADD_VAL (OID_SWITCH_PARAMETERS), | |
| ADD_VAL (OID_SWITCH_PORT_ARRAY), | |
| ADD_VAL (OID_SWITCH_NIC_ARRAY), | |
| ADD_VAL (OID_SWITCH_PORT_CREATE), | |
| ADD_VAL (OID_SWITCH_PORT_DELETE), | |
| ADD_VAL (OID_SWITCH_NIC_CREATE), | |
| ADD_VAL (OID_SWITCH_NIC_CONNECT), | |
| ADD_VAL (OID_SWITCH_NIC_DISCONNECT), | |
| ADD_VAL (OID_SWITCH_NIC_DELETE), | |
| ADD_VAL (OID_SWITCH_PORT_FEATURE_STATUS_QUERY), | |
| ADD_VAL (OID_SWITCH_PORT_TEARDOWN), | |
| ADD_VAL (OID_SWITCH_NIC_SAVE), | |
| ADD_VAL (OID_SWITCH_NIC_SAVE_COMPLETE), | |
| ADD_VAL (OID_SWITCH_NIC_RESTORE), | |
| ADD_VAL (OID_SWITCH_NIC_RESTORE_COMPLETE), | |
| ADD_VAL (OID_SWITCH_NIC_UPDATED), | |
| ADD_VAL (OID_SWITCH_PORT_UPDATED), | |
| ADD_VAL (OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA), | |
| ADD_VAL (OID_TCP_TASK_IPSEC_OFFLOAD_V2_DELETE_SA), | |
| ADD_VAL (OID_TCP_TASK_IPSEC_OFFLOAD_V2_UPDATE_SA), | |
| ADD_VAL (OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA_EX), | |
| ADD_VAL (OID_FFP_SUPPORT), | |
| ADD_VAL (OID_FFP_FLUSH), | |
| ADD_VAL (OID_FFP_CONTROL), | |
| ADD_VAL (OID_FFP_PARAMS), | |
| ADD_VAL (OID_FFP_DATA), | |
| ADD_VAL (OID_FFP_DRIVER_STATS), | |
| ADD_VAL (OID_FFP_ADAPTER_STATS), | |
| ADD_VAL (OID_TCP_CONNECTION_OFFLOAD_PARAMETERS), | |
| ADD_VAL (OID_TUNNEL_INTERFACE_SET_OID), | |
| ADD_VAL (OID_TUNNEL_INTERFACE_RELEASE_OID), | |
| ADD_VAL (OID_QOS_RESERVED1), | |
| ADD_VAL (OID_QOS_RESERVED2), | |
| ADD_VAL (OID_QOS_RESERVED3), | |
| ADD_VAL (OID_QOS_RESERVED4), | |
| ADD_VAL (OID_QOS_RESERVED5), | |
| ADD_VAL (OID_QOS_RESERVED6), | |
| ADD_VAL (OID_QOS_RESERVED7), | |
| ADD_VAL (OID_QOS_RESERVED8), | |
| ADD_VAL (OID_QOS_RESERVED9), | |
| ADD_VAL (OID_QOS_RESERVED10), | |
| ADD_VAL (OID_QOS_RESERVED11), | |
| ADD_VAL (OID_QOS_RESERVED12), | |
| ADD_VAL (OID_QOS_RESERVED13), | |
| ADD_VAL (OID_QOS_RESERVED14), | |
| ADD_VAL (OID_QOS_RESERVED15), | |
| ADD_VAL (OID_QOS_RESERVED16), | |
| ADD_VAL (OID_QOS_RESERVED17), | |
| ADD_VAL (OID_QOS_RESERVED18), | |
| ADD_VAL (OID_QOS_RESERVED19), | |
| ADD_VAL (OID_QOS_RESERVED20), | |
| ADD_VAL (OID_QOS_HARDWARE_CAPABILITIES), | |
| ADD_VAL (OID_QOS_CURRENT_CAPABILITIES), | |
| ADD_VAL (OID_QOS_PARAMETERS), | |
| ADD_VAL (OID_QOS_OPERATIONAL_PARAMETERS), | |
| ADD_VAL (OID_QOS_REMOTE_PARAMETERS), | |
| ADD_VAL (OID_WWAN_DRIVER_CAPS), | |
| ADD_VAL (OID_WWAN_DEVICE_CAPS), | |
| ADD_VAL (OID_WWAN_READY_INFO), | |
| ADD_VAL (OID_WWAN_RADIO_STATE), | |
| ADD_VAL (OID_WWAN_PIN), | |
| ADD_VAL (OID_WWAN_PIN_LIST), | |
| ADD_VAL (OID_WWAN_HOME_PROVIDER), | |
| ADD_VAL (OID_WWAN_PREFERRED_PROVIDERS), | |
| ADD_VAL (OID_WWAN_VISIBLE_PROVIDERS), | |
| ADD_VAL (OID_WWAN_REGISTER_STATE), | |
| ADD_VAL (OID_WWAN_PACKET_SERVICE), | |
| ADD_VAL (OID_WWAN_SIGNAL_STATE), | |
| ADD_VAL (OID_WWAN_CONNECT), | |
| ADD_VAL (OID_WWAN_PROVISIONED_CONTEXTS), | |
| ADD_VAL (OID_WWAN_SERVICE_ACTIVATION), | |
| ADD_VAL (OID_WWAN_SMS_CONFIGURATION), | |
| ADD_VAL (OID_WWAN_SMS_READ), | |
| ADD_VAL (OID_WWAN_SMS_SEND), | |
| ADD_VAL (OID_WWAN_SMS_DELETE), | |
| ADD_VAL (OID_WWAN_SMS_STATUS), | |
| ADD_VAL (OID_WWAN_VENDOR_SPECIFIC), | |
| ADD_VAL (OID_WWAN_AUTH_CHALLENGE), | |
| ADD_VAL (OID_WWAN_ENUMERATE_DEVICE_SERVICES), | |
| ADD_VAL (OID_WWAN_SUBSCRIBE_DEVICE_SERVICE_EVENTS), | |
| ADD_VAL (OID_WWAN_DEVICE_SERVICE_COMMAND), | |
| ADD_VAL (OID_WWAN_USSD), | |
| ADD_VAL (OID_WWAN_PIN_EX), | |
| ADD_VAL (OID_WWAN_ENUMERATE_DEVICE_SERVICE_COMMANDS), | |
| ADD_VAL (OID_WWAN_DEVICE_SERVICE_SESSION), | |
| ADD_VAL (OID_WWAN_DEVICE_SERVICE_SESSION_WRITE), | |
| ADD_VAL (OID_WWAN_PREFERRED_MULTICARRIER_PROVIDERS), | |
| ADD_VAL (OID_WWAN_CREATE_MAC), | |
| ADD_VAL (OID_WWAN_DELETE_MAC), | |
| ADD_VAL (OID_DOT11_OFFLOAD_CAPABILITY), | |
| ADD_VAL (OID_DOT11_CURRENT_OFFLOAD_CAPABILITY), | |
| ADD_VAL (OID_DOT11_WEP_OFFLOAD), | |
| ADD_VAL (OID_DOT11_WEP_UPLOAD), | |
| ADD_VAL (OID_DOT11_DEFAULT_WEP_OFFLOAD), | |
| ADD_VAL (OID_DOT11_DEFAULT_WEP_UPLOAD), | |
| ADD_VAL (OID_DOT11_MPDU_MAX_LENGTH), | |
| ADD_VAL (OID_DOT11_OPERATION_MODE_CAPABILITY), | |
| ADD_VAL (OID_DOT11_CURRENT_OPERATION_MODE), | |
| ADD_VAL (OID_DOT11_CURRENT_PACKET_FILTER), | |
| ADD_VAL (OID_DOT11_ATIM_WINDOW), | |
| ADD_VAL (OID_DOT11_SCAN_REQUEST), | |
| ADD_VAL (OID_DOT11_CURRENT_PHY_TYPE), | |
| ADD_VAL (OID_DOT11_JOIN_REQUEST), | |
| ADD_VAL (OID_DOT11_START_REQUEST), | |
| ADD_VAL (OID_DOT11_UPDATE_IE), | |
| ADD_VAL (OID_DOT11_RESET_REQUEST), | |
| ADD_VAL (OID_DOT11_NIC_POWER_STATE), | |
| ADD_VAL (OID_DOT11_OPTIONAL_CAPABILITY), | |
| ADD_VAL (OID_DOT11_CURRENT_OPTIONAL_CAPABILITY), | |
| ADD_VAL (OID_DOT11_STATION_ID), | |
| ADD_VAL (OID_DOT11_MEDIUM_OCCUPANCY_LIMIT), | |
| ADD_VAL (OID_DOT11_CF_POLLABLE), | |
| ADD_VAL (OID_DOT11_CFP_PERIOD), | |
| ADD_VAL (OID_DOT11_CFP_MAX_DURATION), | |
| ADD_VAL (OID_DOT11_POWER_MGMT_MODE), | |
| ADD_VAL (OID_DOT11_OPERATIONAL_RATE_SET), | |
| ADD_VAL (OID_DOT11_BEACON_PERIOD), | |
| ADD_VAL (OID_DOT11_DTIM_PERIOD), | |
| ADD_VAL (OID_DOT11_WEP_ICV_ERROR_COUNT), | |
| ADD_VAL (OID_DOT11_MAC_ADDRESS), | |
| ADD_VAL (OID_DOT11_RTS_THRESHOLD), | |
| ADD_VAL (OID_DOT11_SHORT_RETRY_LIMIT), | |
| ADD_VAL (OID_DOT11_LONG_RETRY_LIMIT), | |
| ADD_VAL (OID_DOT11_FRAGMENTATION_THRESHOLD), | |
| ADD_VAL (OID_DOT11_MAX_TRANSMIT_MSDU_LIFETIME), | |
| ADD_VAL (OID_DOT11_MAX_RECEIVE_LIFETIME), | |
| ADD_VAL (OID_DOT11_COUNTERS_ENTRY), | |
| ADD_VAL (OID_DOT11_SUPPORTED_PHY_TYPES), | |
| ADD_VAL (OID_DOT11_CURRENT_REG_DOMAIN), | |
| ADD_VAL (OID_DOT11_TEMP_TYPE), | |
| ADD_VAL (OID_DOT11_CURRENT_TX_ANTENNA), | |
| ADD_VAL (OID_DOT11_DIVERSITY_SUPPORT), | |
| ADD_VAL (OID_DOT11_CURRENT_RX_ANTENNA), | |
| ADD_VAL (OID_DOT11_SUPPORTED_POWER_LEVELS), | |
| ADD_VAL (OID_DOT11_CURRENT_TX_POWER_LEVEL), | |
| ADD_VAL (OID_DOT11_HOP_TIME), | |
| ADD_VAL (OID_DOT11_CURRENT_CHANNEL_NUMBER), | |
| ADD_VAL (OID_DOT11_MAX_DWELL_TIME), | |
| ADD_VAL (OID_DOT11_CURRENT_DWELL_TIME), | |
| ADD_VAL (OID_DOT11_CURRENT_SET), | |
| ADD_VAL (OID_DOT11_CURRENT_PATTERN), | |
| ADD_VAL (OID_DOT11_CURRENT_INDEX), | |
| ADD_VAL (OID_DOT11_CURRENT_CHANNEL), | |
| ADD_VAL (OID_DOT11_CCA_MODE_SUPPORTED), | |
| ADD_VAL (OID_DOT11_CURRENT_CCA_MODE), | |
| ADD_VAL (OID_DOT11_ED_THRESHOLD), | |
| ADD_VAL (OID_DOT11_CCA_WATCHDOG_TIMER_MAX), | |
| ADD_VAL (OID_DOT11_CCA_WATCHDOG_COUNT_MAX), | |
| ADD_VAL (OID_DOT11_CCA_WATCHDOG_TIMER_MIN), | |
| ADD_VAL (OID_DOT11_CCA_WATCHDOG_COUNT_MIN), | |
| ADD_VAL (OID_DOT11_REG_DOMAINS_SUPPORT_VALUE), | |
| ADD_VAL (OID_DOT11_SUPPORTED_TX_ANTENNA), | |
| ADD_VAL (OID_DOT11_SUPPORTED_RX_ANTENNA), | |
| ADD_VAL (OID_DOT11_DIVERSITY_SELECTION_RX), | |
| ADD_VAL (OID_DOT11_SUPPORTED_DATA_RATES_VALUE), | |
| ADD_VAL (OID_DOT11_CURRENT_FREQUENCY), | |
| ADD_VAL (OID_DOT11_TI_THRESHOLD), | |
| ADD_VAL (OID_DOT11_FREQUENCY_BANDS_SUPPORTED), | |
| ADD_VAL (OID_DOT11_SHORT_PREAMBLE_OPTION_IMPLEMENTED), | |
| ADD_VAL (OID_DOT11_PBCC_OPTION_IMPLEMENTED), | |
| ADD_VAL (OID_DOT11_CHANNEL_AGILITY_PRESENT), | |
| ADD_VAL (OID_DOT11_CHANNEL_AGILITY_ENABLED), | |
| ADD_VAL (OID_DOT11_HR_CCA_MODE_SUPPORTED), | |
| ADD_VAL (OID_DOT11_MULTI_DOMAIN_CAPABILITY_IMPLEMENTED), | |
| ADD_VAL (OID_DOT11_MULTI_DOMAIN_CAPABILITY_ENABLED), | |
| ADD_VAL (OID_DOT11_COUNTRY_STRING), | |
| ADD_VAL (OID_DOT11_MULTI_DOMAIN_CAPABILITY), | |
| ADD_VAL (OID_DOT11_EHCC_PRIME_RADIX), | |
| ADD_VAL (OID_DOT11_EHCC_NUMBER_OF_CHANNELS_FAMILY_INDEX), | |
| ADD_VAL (OID_DOT11_EHCC_CAPABILITY_IMPLEMENTED), | |
| ADD_VAL (OID_DOT11_EHCC_CAPABILITY_ENABLED), | |
| ADD_VAL (OID_DOT11_HOP_ALGORITHM_ADOPTED), | |
| ADD_VAL (OID_DOT11_RANDOM_TABLE_FLAG), | |
| ADD_VAL (OID_DOT11_NUMBER_OF_HOPPING_SETS), | |
| ADD_VAL (OID_DOT11_HOP_MODULUS), | |
| ADD_VAL (OID_DOT11_HOP_OFFSET), | |
| ADD_VAL (OID_DOT11_HOPPING_PATTERN), | |
| ADD_VAL (OID_DOT11_RANDOM_TABLE_FIELD_NUMBER), | |
| ADD_VAL (OID_DOT11_WPA_TSC), | |
| ADD_VAL (OID_DOT11_RSSI_RANGE), | |
| ADD_VAL (OID_DOT11_RF_USAGE), | |
| ADD_VAL (OID_DOT11_NIC_SPECIFIC_EXTENSION), | |
| ADD_VAL (OID_DOT11_AP_JOIN_REQUEST), | |
| ADD_VAL (OID_DOT11_ERP_PBCC_OPTION_IMPLEMENTED), | |
| ADD_VAL (OID_DOT11_ERP_PBCC_OPTION_ENABLED), | |
| ADD_VAL (OID_DOT11_DSSS_OFDM_OPTION_IMPLEMENTED), | |
| ADD_VAL (OID_DOT11_DSSS_OFDM_OPTION_ENABLED), | |
| ADD_VAL (OID_DOT11_SHORT_SLOT_TIME_OPTION_IMPLEMENTED), | |
| ADD_VAL (OID_DOT11_SHORT_SLOT_TIME_OPTION_ENABLED), | |
| ADD_VAL (OID_DOT11_MAX_MAC_ADDRESS_STATES), | |
| ADD_VAL (OID_DOT11_RECV_SENSITIVITY_LIST), | |
| ADD_VAL (OID_DOT11_WME_IMPLEMENTED), | |
| ADD_VAL (OID_DOT11_WME_ENABLED), | |
| ADD_VAL (OID_DOT11_WME_AC_PARAMETERS), | |
| ADD_VAL (OID_DOT11_WME_UPDATE_IE), | |
| ADD_VAL (OID_DOT11_QOS_TX_QUEUES_SUPPORTED), | |
| ADD_VAL (OID_DOT11_QOS_TX_DURATION), | |
| ADD_VAL (OID_DOT11_QOS_TX_MEDIUM_TIME), | |
| ADD_VAL (OID_DOT11_SUPPORTED_OFDM_FREQUENCY_LIST), | |
| ADD_VAL (OID_DOT11_SUPPORTED_DSSS_CHANNEL_LIST), | |
| ADD_VAL (OID_DOT11_AUTO_CONFIG_ENABLED), | |
| ADD_VAL (OID_DOT11_ENUM_BSS_LIST), | |
| ADD_VAL (OID_DOT11_FLUSH_BSS_LIST), | |
| ADD_VAL (OID_DOT11_POWER_MGMT_REQUEST), | |
| ADD_VAL (OID_DOT11_DESIRED_SSID_LIST), | |
| ADD_VAL (OID_DOT11_EXCLUDED_MAC_ADDRESS_LIST), | |
| ADD_VAL (OID_DOT11_DESIRED_BSSID_LIST), | |
| ADD_VAL (OID_DOT11_DESIRED_BSS_TYPE), | |
| ADD_VAL (OID_DOT11_PMKID_LIST), | |
| ADD_VAL (OID_DOT11_CONNECT_REQUEST), | |
| ADD_VAL (OID_DOT11_EXCLUDE_UNENCRYPTED), | |
| ADD_VAL (OID_DOT11_STATISTICS), | |
| ADD_VAL (OID_DOT11_PRIVACY_EXEMPTION_LIST), | |
| ADD_VAL (OID_DOT11_ENABLED_AUTHENTICATION_ALGORITHM), | |
| ADD_VAL (OID_DOT11_SUPPORTED_UNICAST_ALGORITHM_PAIR), | |
| ADD_VAL (OID_DOT11_ENABLED_UNICAST_CIPHER_ALGORITHM), | |
| ADD_VAL (OID_DOT11_SUPPORTED_MULTICAST_ALGORITHM_PAIR), | |
| ADD_VAL (OID_DOT11_ENABLED_MULTICAST_CIPHER_ALGORITHM), | |
| ADD_VAL (OID_DOT11_CIPHER_DEFAULT_KEY_ID), | |
| ADD_VAL (OID_DOT11_CIPHER_DEFAULT_KEY), | |
| ADD_VAL (OID_DOT11_CIPHER_KEY_MAPPING_KEY), | |
| ADD_VAL (OID_DOT11_ENUM_ASSOCIATION_INFO), | |
| ADD_VAL (OID_DOT11_DISCONNECT_REQUEST), | |
| ADD_VAL (OID_DOT11_UNICAST_USE_GROUP_ENABLED), | |
| ADD_VAL (OID_DOT11_HARDWARE_PHY_STATE), | |
| ADD_VAL (OID_DOT11_DESIRED_PHY_LIST), | |
| ADD_VAL (OID_DOT11_CURRENT_PHY_ID), | |
| ADD_VAL (OID_DOT11_MEDIA_STREAMING_ENABLED), | |
| ADD_VAL (OID_DOT11_UNREACHABLE_DETECTION_THRESHOLD), | |
| ADD_VAL (OID_DOT11_ACTIVE_PHY_LIST), | |
| ADD_VAL (OID_DOT11_EXTSTA_CAPABILITY), | |
| ADD_VAL (OID_DOT11_DATA_RATE_MAPPING_TABLE), | |
| ADD_VAL (OID_DOT11_SUPPORTED_COUNTRY_OR_REGION_STRING), | |
| ADD_VAL (OID_DOT11_DESIRED_COUNTRY_OR_REGION_STRING), | |
| ADD_VAL (OID_DOT11_PORT_STATE_NOTIFICATION), | |
| ADD_VAL (OID_DOT11_IBSS_PARAMS), | |
| ADD_VAL (OID_DOT11_QOS_PARAMS), | |
| ADD_VAL (OID_DOT11_SAFE_MODE_ENABLED), | |
| ADD_VAL (OID_DOT11_HIDDEN_NETWORK_ENABLED), | |
| ADD_VAL (OID_DOT11_ASSOCIATION_PARAMS), | |
| ADD_VAL (OID_DOT11_SAFE_MODE_HT_ENABLED), | |
| ADD_VAL (OID_DOT11_PRIVATE_OIDS_START), | |
| ADD_VAL (OID_DOT11_CURRENT_ADDRESS), | |
| ADD_VAL (OID_DOT11_PERMANENT_ADDRESS), | |
| ADD_VAL (OID_DOT11_MULTICAST_LIST), | |
| ADD_VAL (OID_DOT11_MAXIMUM_LIST_SIZE), | |
| ADD_VAL (OID_DOT11_WPS_ENABLED), | |
| ADD_VAL (OID_DOT11_START_AP_REQUEST), | |
| ADD_VAL (OID_DOT11_AVAILABLE_CHANNEL_LIST), | |
| ADD_VAL (OID_DOT11_AVAILABLE_FREQUENCY_LIST), | |
| ADD_VAL (OID_DOT11_DISASSOCIATE_PEER_REQUEST), | |
| ADD_VAL (OID_DOT11_INCOMING_ASSOCIATION_DECISION), | |
| ADD_VAL (OID_DOT11_ADDITIONAL_IE), | |
| ADD_VAL (OID_DOT11_ENUM_PEER_INFO), | |
| ADD_VAL (OID_DOT11_CREATE_MAC), | |
| ADD_VAL (OID_DOT11_DELETE_MAC), | |
| ADD_VAL (OID_DOT11_PREFERRED_MAC), | |
| ADD_VAL (OID_DOT11_VIRTUAL_STATION_CAPABILITY), | |
| ADD_VAL (OID_DOT11_WFD_DEVICE_CAPABILITY), | |
| ADD_VAL (OID_DOT11_WFD_GROUP_OWNER_CAPABILITY), | |
| ADD_VAL (OID_DOT11_WFD_DEVICE_INFO), | |
| ADD_VAL (OID_DOT11_WFD_SECONDARY_DEVICE_TYPE_LIST), | |
| ADD_VAL (OID_DOT11_WFD_DISCOVER_REQUEST), | |
| ADD_VAL (OID_DOT11_WFD_ENUM_DEVICE_LIST), | |
| ADD_VAL (OID_DOT11_WFD_LISTEN_STATE_DISCOVERABILITY), | |
| ADD_VAL (OID_DOT11_WFD_ADDITIONAL_IE), | |
| ADD_VAL (OID_DOT11_WFD_FLUSH_DEVICE_LIST), | |
| ADD_VAL (OID_DOT11_WFD_SEND_GO_NEGOTIATION_REQUEST), | |
| ADD_VAL (OID_DOT11_WFD_SEND_GO_NEGOTIATION_RESPONSE), | |
| ADD_VAL (OID_DOT11_WFD_SEND_GO_NEGOTIATION_CONFIRMATION), | |
| ADD_VAL (OID_DOT11_WFD_SEND_INVITATION_REQUEST), | |
| ADD_VAL (OID_DOT11_WFD_SEND_INVITATION_RESPONSE), | |
| ADD_VAL (OID_DOT11_WFD_SEND_PROVISION_DISCOVERY_REQUEST), | |
| ADD_VAL (OID_DOT11_WFD_SEND_PROVISION_DISCOVERY_RESPONSE), | |
| ADD_VAL (OID_DOT11_WFD_GET_DIALOG_TOKEN), | |
| ADD_VAL (OID_DOT11_WFD_STOP_DISCOVERY), | |
| ADD_VAL (OID_DOT11_WFD_DEVICE_LISTEN_CHANNEL), | |
| ADD_VAL (OID_DOT11_WFD_DESIRED_GROUP_ID), | |
| ADD_VAL (OID_DOT11_WFD_START_GO_REQUEST), | |
| ADD_VAL (OID_DOT11_WFD_GROUP_START_PARAMETERS), | |
| ADD_VAL (OID_DOT11_WFD_CONNECT_TO_GROUP_REQUEST), | |
| ADD_VAL (OID_DOT11_WFD_DISCONNECT_FROM_GROUP_REQUEST), | |
| ADD_VAL (OID_DOT11_WFD_GROUP_JOIN_PARAMETERS), | |
| ADD_VAL (OID_DOT11_POWER_MGMT_MODE_AUTO_ENABLED), | |
| ADD_VAL (OID_DOT11_POWER_MGMT_MODE_STATUS), | |
| ADD_VAL (OID_DOT11_OFFLOAD_NETWORK_LIST), | |
| ADD_VAL (OID_DOT11_MANUFACTURING_TEST), | |
| ADD_VAL (OID_ATH_XMIT_FILTERED), | |
| ADD_VAL (OID_ATH_XMIT_RETRIES), | |
| ADD_VAL (OID_ATH_XMIT_EXCESSIVE_RETRIES), | |
| ADD_VAL (OID_ATH_XMIT_ACK_RSSI), | |
| ADD_VAL (OID_ATH_XMIT_HW_ACKS_MISSING), | |
| ADD_VAL (OID_ATH_XMIT_RTS_ERRORS), | |
| ADD_VAL (OID_ATH_XMIT_REQUESTS), | |
| ADD_VAL (OID_ATH_XMIT_REQUESTS_DENIED), | |
| ADD_VAL (OID_ATH_XMIT_FIFO_UNDERRUNS), | |
| ADD_VAL (OID_ATH_XMIT_DATA_RATE), | |
| ADD_VAL (OID_ATH_RCV_RSSI), | |
| ADD_VAL (OID_ATH_RCV_SW_FCS_ERRORS), | |
| ADD_VAL (OID_ATH_RCV_HW_FCS_ERRORS), | |
| ADD_VAL (OID_ATH_RCV_DECRYPT_ERRORS), | |
| ADD_VAL (OID_ATH_RCV_DUPLICATES), | |
| ADD_VAL (OID_ATH_RCV_MULTIPLE_DUPLICATES), | |
| ADD_VAL (OID_ATH_RCV_FIFO_OVERRUNS), | |
| ADD_VAL (OID_ATH_RCV_DATA_RATE), | |
| ADD_VAL (OID_ATH_RCV_MULTICAST_FRAMES), | |
| ADD_VAL (OID_ATH_CURRENT_CHANNEL), | |
| ADD_VAL (OID_ATH_TURBO_MODE), | |
| ADD_VAL (OID_ATH_NOISE_FLOOR), | |
| { 0, NULL } | |
| }; | |
| static int compare_oid (const void *a, const void *b) | |
| { | |
| DWORD _a = *(const DWORD*) a; | |
| DWORD _b = *(const DWORD*) b; | |
| if (_a < _b) | |
| return (-1); | |
| if (_a > _b) | |
| return (1); | |
| return (0); | |
| } | |
| static unsigned supported_OID_list_length (ADAPTER *adapter, HANDLE air_hnd) | |
| { | |
| struct { | |
| PACKET_OID_DATA oidData; | |
| DWORD values [1]; | |
| } oid; | |
| BOOL rc; | |
| memset(&oid, 0, sizeof(oid)); | |
| oid.oidData.Oid = OID_GEN_SUPPORTED_LIST; | |
| oid.oidData.Length = sizeof(oid); | |
| if (air_hnd) | |
| rc = DeviceIoControl(air_hnd, oid.oidData.Oid, NULL, 0, NULL, 0, &oid.oidData.Length, NULL); | |
| else rc = PacketRequest(adapter, FALSE, &oid.oidData); | |
| WINDUMP_TRACE (1, "rc: %d, oid.oidData.Length: %lu, GetLastError(): %lu\n", rc, oid.oidData.Length, GetLastError()); | |
| return (oid.oidData.Length); | |
| } | |
| static void supported_OID_list (ADAPTER *adapter, HANDLE air_hnd) | |
| { | |
| struct { | |
| PACKET_OID_DATA oidData; | |
| DWORD values [1000]; | |
| } oid; | |
| unsigned num = 0, num_unknowns = 0, num_dups = 0; | |
| //unsigned len = supported_OID_list_length (adapter, air_hnd); | |
| BOOL rc; | |
| puts(" Available OIDs for this adapter:"); | |
| memset(&oid, 0, sizeof(oid)); | |
| oid.oidData.Oid = OID_GEN_SUPPORTED_LIST; | |
| oid.oidData.Length = sizeof(oid); | |
| if (air_hnd) | |
| rc = (DeviceIoControl(air_hnd, oid.oidData.Oid, NULL, 0, NULL, 0, &oid.oidData.Length, NULL) == TRUE); | |
| else rc = (PacketRequest(adapter, FALSE, &oid.oidData) == TRUE); | |
| if (rc) { | |
| DWORD *values = (DWORD*)&oid.oidData.Data; | |
| DWORD len = oid.oidData.Length; | |
| DWORD prev = 0; | |
| qsort (values, len/sizeof(*values), sizeof(*values), compare_oid); | |
| while (len >= sizeof(*values)) | |
| { | |
| DWORD val = *values++; | |
| if (prev == val) | |
| num_dups++; | |
| else | |
| { | |
| const char *oid = tok2str (oid_vals, "Unknown OID", val); | |
| if (!strncmp(oid,"Unknown",7)) | |
| num_unknowns++; | |
| printf (" 0x%08lX %s\n", val, oid); | |
| } | |
| len -= sizeof(*values); | |
| num++; | |
| prev = val; | |
| } | |
| } | |
| if (num == 0) | |
| printf (" %s\n", NONE_STR); | |
| else printf (" %u OIDs (%u unknown, %u duplicates).\n", num, num_unknowns, num_dups); | |
| } | |
| static HANDLE stdout_hnd = INVALID_HANDLE_VALUE; | |
| static BOOL stdout_redirected = FALSE; | |
| static CONSOLE_SCREEN_BUFFER_INFO console_info; | |
| static void windump_color_init (void) | |
| { | |
| stdout_hnd = GetStdHandle (STD_OUTPUT_HANDLE); | |
| stdout_redirected = (stdout_hnd == INVALID_HANDLE_VALUE) || | |
| (!GetConsoleScreenBufferInfo(stdout_hnd, &console_info)) || | |
| (GetFileType(stdout_hnd) != FILE_TYPE_CHAR); | |
| WINDUMP_TRACE (2, "stdout_redirected: %d.\n", stdout_redirected); | |
| } | |
| /* | |
| * todo: make this into a table (configurable from a .cfg-file?) | |
| */ | |
| int windump_lookup_color (const char *func) | |
| { | |
| if (func == NULL) /* The color of the WINDUMP_TRACE() itself */ | |
| return (FOREGROUND_INTENSITY + 7); /* Bright white */ | |
| if (!strcmp(func,"ether_hdr_print")) | |
| return (FOREGROUND_INTENSITY + 3); | |
| if (!strcmp(func,"txtproto_print")) /* this includes http_print() */ | |
| return (FOREGROUND_INTENSITY | FOREGROUND_RED); | |
| if (!strcmp(func,"http_print")) /* How to check if called from http_print() only? */ | |
| return (FOREGROUND_INTENSITY | FOREGROUND_RED); /* Bright red */ | |
| if (!strcmp(func,"ts_print")) | |
| return (FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_RED); /* Yellow */ | |
| if (!strcmp(func,"show_devices_and_exit")) | |
| return (FOREGROUND_INTENSITY | FOREGROUND_RED); /* Bright red */ | |
| if (!strcmp(func,"show_network_addresses")) | |
| return (FOREGROUND_INTENSITY + 3); /* Bright cyan */ | |
| if (!strcmp(func,"ip_print")) | |
| return (FOREGROUND_INTENSITY + 3); /* Bright cyan */ | |
| if (!strcmp(func,"ns_rprint") || !strcmp(func,"ns_qprint")) | |
| return (FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_RED); /* Yellow */ | |
| if (!strcmp(func,"syslog_print")) | |
| return (FOREGROUND_INTENSITY + 5); /* Bright magenta */ | |
| return (0); | |
| } | |
| int windump_set_color (int color) | |
| { | |
| if (color && stdout_hnd != INVALID_HANDLE_VALUE) | |
| { | |
| fflush (stdout); | |
| SetConsoleTextAttribute (stdout_hnd, (console_info.wAttributes & ~7) | color); | |
| } | |
| return (color); | |
| } | |
| void windump_restore_color (int color) | |
| { | |
| if (color && stdout_hnd != INVALID_HANDLE_VALUE) | |
| { | |
| fflush (stdout); | |
| SetConsoleTextAttribute (stdout_hnd, console_info.wAttributes); | |
| } | |
| } | |
| int vcprintf (const struct netdissect_options *ndo, const char *fmt, va_list args) | |
| { | |
| int ret, color = 0; | |
| static int init = 0; | |
| if (!init) | |
| { | |
| windump_color_init(); | |
| init = 1; | |
| } | |
| if (!stdout_redirected && ndo) | |
| { | |
| color = windump_lookup_color (ndo->printf_func); | |
| windump_set_color (color); | |
| } | |
| ret = vfprintf (stdout, fmt, args); | |
| windump_restore_color (color); | |
| return (ret); | |
| } | |
| int windump_trace_init (void) | |
| { | |
| static int trace_level = -1; | |
| const char *env; | |
| if (trace_level == -1) | |
| { | |
| env = getenv("WINDUMP_TRACE"); | |
| if (env) | |
| trace_level = *env - '0'; | |
| else trace_level = 0; | |
| windump_color_init(); | |
| } | |
| return (trace_level); | |
| } | |
| /* | |
| * If using the IpHlpApi information, use the more sensible description in | |
| * 'iface->Description' (the wpcap description is often just "Microsoft"). | |
| * Otherwise print the 'dev->description'. | |
| * | |
| * Also strip trailing newlines and right aligned text in description; | |
| * text separated by TABs or >= 2 spaces. | |
| */ | |
| static void | |
| show_description (netdissect_options *ndo, const IP_ADAPTER_ADDRESSES *iface, pcap_if_t *dev) | |
| { | |
| char descr[256], *p; | |
| if (iface) | |
| strlcpy (descr, wstring_utf8(iface->Description), sizeof(descr)); | |
| else if (!dev->description) | |
| strcpy (descr, "None"); | |
| else | |
| strlcpy (descr, dev->description, sizeof(descr)); | |
| if ((p = strrchr(descr,'\r')) != NULL) | |
| *p = '\0'; | |
| if ((p = strrchr(descr,'\n')) != NULL) | |
| *p = '\0'; | |
| if ((p = strchr(descr,'\t')) != NULL) | |
| *p = '\0'; | |
| if ((p = strstr(descr," ")) != NULL) | |
| *p = '\0'; | |
| printf (" Description: %s\n", descr); | |
| } | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #ifndef win32_stuff_h | |
| #define win32_stuff_h | |
| #ifndef netdissect_h | |
| #error "I must be included after netdissect.h." | |
| #endif | |
| typedef struct netdissect_options netdissect_options; | |
| void show_printers (netdissect_options *ndo); | |
| void show_iface_details (netdissect_options *ndo, pcap_if_t *dev); | |
| BOOL set_monitor_mode (pcap_t *pcap); | |
| void get_version_extras (void); | |
| #if defined(HAVE_AIRPCAP_API) | |
| int airpcap_capture_all (pcap_t *pcap, int all, char *ebuf); | |
| int airpcap_channel_set (pcap_t *pcap, int ch, int *orig, char *ebuf); | |
| #endif | |
| #if defined(_WIN32) | |
| int vcprintf (const struct netdissect_options *ndo, const char *fmt, va_list args); | |
| int windump_set_color (int color); | |
| void windump_restore_color (int color); | |
| int windump_lookup_color (const char *func); | |
| #endif | |
| int windump_trace_init (void); | |
| /* | |
| * To detect wrong usage such as: | |
| * WINDUMP_TRACE ("foo: %d, bar: %s\n", some_integer, some_string); | |
| * | |
| * where the compiler would without reservation interpret | |
| * "foo: %d, bar: %s\n" as 'level' since '__VA_ARGS_' is used below. | |
| */ | |
| #define CHECK_LEVEL(level) do { \ | |
| if ((int)(level) < 0 || (int)(level) > 9) \ | |
| printf ("Illegal use of 'level' in " \ | |
| "'WINDUMP_TRACE()' macro at %s(%u): ", \ | |
| __FILE__, __LINE__); \ | |
| } while (0) | |
| #define WINDUMP_TRACE(level, fmt, ...) \ | |
| do { \ | |
| CHECK_LEVEL (level); \ | |
| if (windump_trace_init() >= level) { \ | |
| int col = windump_set_color ( \ | |
| windump_lookup_color(NULL) ); \ | |
| printf ("%s(%u): ", __FILE__, __LINE__); \ | |
| printf (fmt, ##__VA_ARGS__); \ | |
| windump_restore_color (col); \ | |
| } \ | |
| } while (0) | |
| #endif /* win32_stuff_h */ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment