1 /** 2 * This file has no copyright assigned and is placed in the Public Domain. 3 * This file is part of the mingw-w64 runtime package. 4 * No warranty is given; refer to the file DISCLAIMER.PD within this package. 5 */ 6 #ifndef _INC_IFDEF 7 #define _INC_IFDEF 8 9 #include <ipifcons.h> 10 11 #ifdef __cplusplus 12 extern "C" { 13 #endif 14 15 #define IF_MAX_STRING_SIZE 256 16 #define IF_MAX_PHYS_ADDRESS_LENGTH 32 17 18 typedef UINT32 NET_IF_COMPARTMENT_ID, *PNET_IF_COMPARTMENT_ID; 19 20 typedef ULONG NET_IFINDEX, *PNET_IFINDEX; 21 typedef UINT16 NET_IFTYPE, *PNET_IFTYPE; 22 typedef NET_IFINDEX IF_INDEX, *PIF_INDEX; 23 24 typedef GUID NET_IF_NETWORK_GUID; 25 26 typedef enum _IF_OPER_STATUS { 27 IfOperStatusUp = 1, 28 IfOperStatusDown, 29 IfOperStatusTesting, 30 IfOperStatusUnknown, 31 IfOperStatusDormant, 32 IfOperStatusNotPresent, 33 IfOperStatusLowerLayerDown 34 } IF_OPER_STATUS; 35 36 typedef enum _NET_IF_OPER_STATUS { 37 NET_IF_OPER_STATUS_UP = 1, 38 NET_IF_OPER_STATUS_DOWN, 39 NET_IF_OPER_STATUS_TESTING, 40 NET_IF_OPER_STATUS_UNKNOWN, 41 NET_IF_OPER_STATUS_DORMANT, 42 NET_IF_OPER_STATUS_NOT_PRESENT, 43 NET_IF_OPER_STATUS_LOWER_LAYER_DOWN 44 } NET_IF_OPER_STATUS, *PNET_IF_OPER_STATUS; 45 46 typedef enum _NET_IF_ADMIN_STATUS { 47 NET_IF_ADMIN_STATUS_UP = 1, 48 NET_IF_ADMIN_STATUS_DOWN, 49 NET_IF_ADMIN_STATUS_TESTING 50 } NET_IF_ADMIN_STATUS, *PNET_IF_ADMIN_STATUS; 51 52 typedef enum _NET_IF_MEDIA_CONNECT_STATE { 53 MediaConnectStateUnknown, 54 MediaConnectStateConnected, 55 MediaConnectStateDisconnected 56 } NET_IF_MEDIA_CONNECT_STATE, *PNET_IF_MEDIA_CONNECT_STATE; 57 58 typedef enum _NET_IF_ACCESS_TYPE { 59 NET_IF_ACCESS_LOOPBACK = 1, 60 NET_IF_ACCESS_BROADCAST, 61 NET_IF_ACCESS_POINT_TO_POINT, 62 NET_IF_ACCESS_POINT_TO_MULTI_POINT, 63 NET_IF_ACCESS_MAXIMUM 64 } NET_IF_ACCESS_TYPE, *PNET_IF_ACCESS_TYPE; 65 66 typedef enum _NET_IF_CONNECTION_TYPE { 67 NET_IF_CONNECTION_DEDICATED = 1, 68 NET_IF_CONNECTION_PASSIVE, 69 NET_IF_CONNECTION_DEMAND, 70 NET_IF_CONNECTION_MAXIMUM 71 } NET_IF_CONNECTION_TYPE, *PNET_IF_CONNECTION_TYPE; 72 73 typedef enum _NET_IF_DIRECTION_TYPE { 74 NET_IF_DIRECTION_SENDRECEIVE, 75 NET_IF_DIRECTION_SENDONLY, 76 NET_IF_DIRECTION_RECEIVEONLY, 77 NET_IF_DIRECTION_MAXIMUM 78 } NET_IF_DIRECTION_TYPE, *PNET_IF_DIRECTION_TYPE; 79 80 typedef enum _NET_IF_MEDIA_DUPLEX_STATE { 81 MediaDuplexStateUnknown, 82 MediaDuplexStateHalf, 83 MediaDuplexStateFull 84 } NET_IF_MEDIA_DUPLEX_STATE, *PNET_IF_MEDIA_DUPLEX_STATE; 85 86 typedef enum _TUNNEL_TYPE { 87 TUNNEL_TYPE_NONE = 0, 88 TUNNEL_TYPE_OTHER = 1, 89 TUNNEL_TYPE_DIRECT = 2, 90 TUNNEL_TYPE_6TO4 = 11, 91 TUNNEL_TYPE_ISATAP = 13, 92 TUNNEL_TYPE_TEREDO = 14, 93 TUNNEL_TYPE_IPHTTPS = 15 94 } TUNNEL_TYPE, *PTUNNEL_TYPE; 95 96 typedef union _NET_LUID { 97 ULONG64 Value; 98 __C89_NAMELESS struct { /* bitfield with 64 bit types. */ 99 ULONG64 Reserved :24; 100 ULONG64 NetLuidIndex :24; 101 ULONG64 IfType :16; 102 } Info; 103 } NET_LUID, *PNET_LUID; 104 105 typedef NET_LUID IF_LUID, *PIF_LUID; 106 107 typedef struct _IF_COUNTED_STRING_LH { 108 USHORT Length; 109 WCHAR String[IF_MAX_STRING_SIZE + 1]; 110 } IF_COUNTED_STRING_LH, *PIF_COUNTED_STRING_LH; 111 typedef IF_COUNTED_STRING_LH IF_COUNTED_STRING; 112 typedef IF_COUNTED_STRING *PIF_COUNTED_STRING; 113 114 typedef struct _IF_PHYSICAL_ADDRESS_LH { 115 USHORT Length; 116 UCHAR Address[IF_MAX_PHYS_ADDRESS_LENGTH]; 117 } IF_PHYSICAL_ADDRESS_LH, *PIF_PHYSICAL_ADDRESS_LH; 118 typedef IF_PHYSICAL_ADDRESS_LH IF_PHYSICAL_ADDRESS; 119 typedef IF_PHYSICAL_ADDRESS *PIF_PHYSICAL_ADDRESS; 120 121 #ifdef __cplusplus 122 } 123 #endif 124 125 #endif /* _INC_IFDEF */ 126 127