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_DHCPV6CSDK
7#define _INC_DHCPV6CSDK
8
9#ifdef __cplusplus
10extern "C" {
11#endif
12
13#if (_WIN32_WINNT >= 0x0600)
14
15#include <winapifamily.h>
16
17#ifndef DHCPV6_OPTIONS_DEFINED
18#define DHCPV6_OPTIONS_DEFINED
19
20#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
21
22#define DHCPV6_OPTION_CLIENTID 1
23#define DHCPV6_OPTION_SERVERID 2
24#define DHCPV6_OPTION_IA_NA 3
25#define DHCPV6_OPTION_IA_TA 4
26#define DHCPV6_OPTION_ORO 6
27#define DHCPV6_OPTION_PREFERENCE 7
28#define DHCPV6_OPTION_UNICAST 12
29#define DHCPV6_OPTION_RAPID_COMMIT 14
30#define DHCPV6_OPTION_USER_CLASS 15
31#define DHCPV6_OPTION_VENDOR_CLASS 16
32#define DHCPV6_OPTION_VENDOR_OPTS 17
33#define DHCPV6_OPTION_RECONF_MSG 19
34
35#define DHCPV6_OPTION_SIP_SERVERS_NAMES 21
36#define DHCPV6_OPTION_SIP_SERVERS_ADDRS 22
37#define DHCPV6_OPTION_DNS_SERVERS 23
38#define DHCPV6_OPTION_DOMAIN_LIST 24
39#define DHCPV6_OPTION_IA_PD 25
40#define DHCPV6_OPTION_NIS_SERVERS 27
41#define DHCPV6_OPTION_NISP_SERVERS 28
42#define DHCPV6_OPTION_NIS_DOMAIN_NAME 29
43#define DHCPV6_OPTION_NISP_DOMAIN_NAME 30
44
45#endif /* WINAPI_PARTITION_APP */
46
47#endif /* DHCPV6_OPTIONS_DEFINED */
48
49typedef enum _StatusCode {
50 STATUS_NO_ERROR,
51 STATUS_UNSPECIFIED_FAILURE,
52 STATUS_NO_BINDING = 3,
53 STATUS_NOPREFIX_AVAIL = 6
54} StatusCode;
55
56typedef struct _DHCPV6CAPI_CLASSID {
57 ULONG Flags;
58 LPBYTE Data;
59 ULONG nBytesData;
60} DHCPV6CAPI_CLASSID, *PDHCPV6CAPI_CLASSID, *LPDHCPV6CAPI_CLASSID;
61
62#ifndef DHCPV6API_PARAMS_DEFINED
63#define DHCPV6API_PARAMS_DEFINED
64
65typedef struct _DHCPV6CAPI_PARAMS {
66 ULONG Flags;
67 ULONG OptionId;
68 WINBOOL IsVendor;
69 LPBYTE Data;
70 DWORD nBytesData;
71} DHCPV6CAPI_PARAMS, *PDHCPV6CAPI_PARAMS, *LPDHCPV6CAPI_PARAMS;
72
73#endif /* DHCPV6API_PARAMS_DEFINED */
74
75typedef struct _DHCPV6Prefix {
76 UCHAR prefix[16];
77 DWORD prefixLength;
78 DWORD preferredLifeTime;
79 DWORD validLifeTime;
80 StatusCode status;
81} DHCPV6Prefix, *PDHCPV6Prefix, *LPDHCPV6Prefix;
82
83typedef struct _DHCPV6CAPI_PARAMS_ARRAY {
84 ULONG nParams;
85 LPDHCPV6CAPI_PARAMS Params;
86} DHCPV6CAPI_PARAMS_ARRAY, *PDHCPV6CAPI_PARAMS_ARRAY, *LPDHCPV6CAPI_PARAMS_ARRAY;
87
88typedef struct _DHCPV6PrefixLeaseInformation {
89 DWORD nPrefixes;
90 LPDHCPV6Prefix prefixArray;
91 DWORD iaid;
92 time_t T1;
93 time_t T2;
94 time_t MaxLeaseExpirationTime;
95 time_t LastRenewalTime;
96 StatusCode status;
97 LPBYTE ServerId;
98 DWORD ServerIdLen;
99} DHCPV6PrefixLeaseInformation, *PDHCPV6PrefixLeaseInformation, *LPDHCPV6PrefixLeaseInformation, *LPDHCPV6CAPIPrefixLeaseInformation;
100
101VOID APIENTRY Dhcpv6CApiCleanup(void);
102
103VOID APIENTRY Dhcpv6CApiInitialize(
104 LPDWORD Version
105);
106
107DWORD APIENTRY Dhcpv6RequestParams(
108 WINBOOL forceNewInform,
109 LPVOID reserved,
110 LPWSTR adapterName,
111 LPDHCPV6CAPI_CLASSID classId,
112 DHCPV6CAPI_PARAMS_ARRAY recdParams,
113 LPBYTE buffer,
114 LPDWORD pSize
115);
116
117DWORD APIENTRY Dhcpv6ReleasePrefix(
118 LPWSTR adapterName,
119 LPDHCPV6CAPI_CLASSID classId,
120 LPDHCPV6CAPIPrefixLeaseInformation prefixleaseInfo
121);
122
123DWORD APIENTRY Dhcpv6RenewPrefix(
124 LPWSTR adapterName,
125 LPDHCPV6CAPI_CLASSID classId,
126 LPDHCPV6PrefixLeaseInformation prefixleaseInfo,
127 DWORD *pdwTimeToWait,
128 DWORD bValidatePrefix
129);
130
131DWORD APIENTRY Dhcpv6RequestPrefix(
132 LPWSTR adapterName,
133 LPDHCPV6CAPI_CLASSID classId,
134 LPDHCPV6PrefixLeaseInformation prefixleaseInfo,
135 DWORD *pdwTimeToWait
136);
137
138#endif /* (_WIN32_WINNT >= 0x0600) */
139
140#ifdef __cplusplus
141}
142#endif
143
144#endif /*_INC_DHCPV6CSDK*/