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