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