Home | History | Annotate | Download | only in include
      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