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*/