blob: ced4a196720e0a651019de8e759caee2f18f7e46 [file] [log] [blame]
/**
* This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the mingw-w64 runtime package.
* No warranty is given; refer to the file DISCLAIMER.PD within this package.
*/
#ifndef _INC_DHCPV6CSDK
#define _INC_DHCPV6CSDK
#ifdef __cplusplus
extern "C" {
#endif
#if (_WIN32_WINNT >= 0x0600)
#include <winapifamily.h>
#ifndef DHCPV6_OPTIONS_DEFINED
#define DHCPV6_OPTIONS_DEFINED
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
#define DHCPV6_OPTION_CLIENTID 1
#define DHCPV6_OPTION_SERVERID 2
#define DHCPV6_OPTION_IA_NA 3
#define DHCPV6_OPTION_IA_TA 4
#define DHCPV6_OPTION_ORO 6
#define DHCPV6_OPTION_PREFERENCE 7
#define DHCPV6_OPTION_UNICAST 12
#define DHCPV6_OPTION_RAPID_COMMIT 14
#define DHCPV6_OPTION_USER_CLASS 15
#define DHCPV6_OPTION_VENDOR_CLASS 16
#define DHCPV6_OPTION_VENDOR_OPTS 17
#define DHCPV6_OPTION_RECONF_MSG 19
#define DHCPV6_OPTION_SIP_SERVERS_NAMES 21
#define DHCPV6_OPTION_SIP_SERVERS_ADDRS 22
#define DHCPV6_OPTION_DNS_SERVERS 23
#define DHCPV6_OPTION_DOMAIN_LIST 24
#define DHCPV6_OPTION_IA_PD 25
#define DHCPV6_OPTION_NIS_SERVERS 27
#define DHCPV6_OPTION_NISP_SERVERS 28
#define DHCPV6_OPTION_NIS_DOMAIN_NAME 29
#define DHCPV6_OPTION_NISP_DOMAIN_NAME 30
#endif /* WINAPI_PARTITION_APP */
#endif /* DHCPV6_OPTIONS_DEFINED */
typedef enum _StatusCode {
STATUS_NO_ERROR,
STATUS_UNSPECIFIED_FAILURE,
STATUS_NO_BINDING = 3,
STATUS_NOPREFIX_AVAIL = 6
} StatusCode;
typedef struct _DHCPV6CAPI_CLASSID {
ULONG Flags;
LPBYTE Data;
ULONG nBytesData;
} DHCPV6CAPI_CLASSID, *PDHCPV6CAPI_CLASSID, *LPDHCPV6CAPI_CLASSID;
#ifndef DHCPV6API_PARAMS_DEFINED
#define DHCPV6API_PARAMS_DEFINED
typedef struct _DHCPV6CAPI_PARAMS {
ULONG Flags;
ULONG OptionId;
WINBOOL IsVendor;
LPBYTE Data;
DWORD nBytesData;
} DHCPV6CAPI_PARAMS, *PDHCPV6CAPI_PARAMS, *LPDHCPV6CAPI_PARAMS;
#endif /* DHCPV6API_PARAMS_DEFINED */
typedef struct _DHCPV6Prefix {
UCHAR prefix[16];
DWORD prefixLength;
DWORD preferredLifeTime;
DWORD validLifeTime;
StatusCode status;
} DHCPV6Prefix, *PDHCPV6Prefix, *LPDHCPV6Prefix;
typedef struct _DHCPV6CAPI_PARAMS_ARRAY {
ULONG nParams;
LPDHCPV6CAPI_PARAMS Params;
} DHCPV6CAPI_PARAMS_ARRAY, *PDHCPV6CAPI_PARAMS_ARRAY, *LPDHCPV6CAPI_PARAMS_ARRAY;
typedef struct _DHCPV6PrefixLeaseInformation {
DWORD nPrefixes;
LPDHCPV6Prefix prefixArray;
DWORD iaid;
time_t T1;
time_t T2;
time_t MaxLeaseExpirationTime;
time_t LastRenewalTime;
StatusCode status;
LPBYTE ServerId;
DWORD ServerIdLen;
} DHCPV6PrefixLeaseInformation, *PDHCPV6PrefixLeaseInformation, *LPDHCPV6PrefixLeaseInformation, *LPDHCPV6CAPIPrefixLeaseInformation;
VOID APIENTRY Dhcpv6CApiCleanup(void);
VOID APIENTRY Dhcpv6CApiInitialize(
LPDWORD Version
);
DWORD APIENTRY Dhcpv6RequestParams(
WINBOOL forceNewInform,
LPVOID reserved,
LPWSTR adapterName,
LPDHCPV6CAPI_CLASSID classId,
DHCPV6CAPI_PARAMS_ARRAY recdParams,
LPBYTE buffer,
LPDWORD pSize
);
DWORD APIENTRY Dhcpv6ReleasePrefix(
LPWSTR adapterName,
LPDHCPV6CAPI_CLASSID classId,
LPDHCPV6CAPIPrefixLeaseInformation prefixleaseInfo
);
DWORD APIENTRY Dhcpv6RenewPrefix(
LPWSTR adapterName,
LPDHCPV6CAPI_CLASSID classId,
LPDHCPV6PrefixLeaseInformation prefixleaseInfo,
DWORD *pdwTimeToWait,
DWORD bValidatePrefix
);
DWORD APIENTRY Dhcpv6RequestPrefix(
LPWSTR adapterName,
LPDHCPV6CAPI_CLASSID classId,
LPDHCPV6PrefixLeaseInformation prefixleaseInfo,
DWORD *pdwTimeToWait
);
#endif /* (_WIN32_WINNT >= 0x0600) */
#ifdef __cplusplus
}
#endif
#endif /*_INC_DHCPV6CSDK*/