mirror of https://github.com/UMSKT/xpmgr.git
192 lines
6.1 KiB
C
192 lines
6.1 KiB
C
/*++
|
|
|
|
Copyright (c) Microsoft Corporation. All rights reserved.
|
|
|
|
Module Name:
|
|
|
|
dhcpv6csdk.h
|
|
|
|
Abstract:
|
|
|
|
These are the exported dhcpv6 client api function definitions
|
|
|
|
Author:
|
|
|
|
Achint Setia (asetia) July-1-2005
|
|
|
|
Environment:
|
|
|
|
User Mode - Win32
|
|
|
|
Revision History:
|
|
|
|
|
|
--*/
|
|
|
|
#ifndef _DHCPV6CSDK_
|
|
#define _DHCPV6CSDK_
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
#ifndef DHCPV6_OPTIONS_DEFINED
|
|
#define DHCPV6_OPTIONS_DEFINED
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif
|
|
|
|
//
|
|
// DHCPv6 Standard Options(non-encapsulated).
|
|
//
|
|
|
|
|
|
|
|
#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 DHCPV6_OPTIONS_DEFINED
|
|
|
|
#ifndef DHCPV6API_PARAMS_DEFINED
|
|
#define DHCPV6API_PARAMS_DEFINED
|
|
|
|
typedef struct _DHCPV6CAPI_PARAMS { // use this structure to request params
|
|
ULONG Flags; // for future use
|
|
ULONG OptionId; // what option is this?
|
|
BOOL IsVendor; // is this vendor specific?
|
|
LPBYTE Data; // the actual data
|
|
DWORD nBytesData; // how many bytes of data are there in Data?
|
|
} DHCPV6CAPI_PARAMS, *PDHCPV6CAPI_PARAMS, *LPDHCPV6CAPI_PARAMS;
|
|
|
|
#endif DHCPV6API_PARAMS_DEFINED
|
|
|
|
typedef struct _DHCPV6CAPI_PARAMS_ARRAY { // array of params..
|
|
ULONG nParams; // size of array
|
|
LPDHCPV6CAPI_PARAMS Params; // actual array
|
|
} DHCPV6CAPI_PARAMS_ARRAY, *PDHCPV6CAPI_PARAMS_ARRAY, *LPDHCPV6CAPI_PARAMS_ARRAY;
|
|
|
|
typedef struct _DHCPV6CAPI_CLASSID { // defines a client class id.
|
|
ULONG Flags; // must be zero currently.
|
|
#ifdef __midl
|
|
[size_is(nBytesData)] LPBYTE Data;
|
|
#else
|
|
__field_bcount(nBytesData) LPBYTE Data; // classid binary data.
|
|
#endif
|
|
ULONG nBytesData; // how many bytes of data are there?
|
|
} DHCPV6CAPI_CLASSID, *PDHCPV6CAPI_CLASSID, *LPDHCPV6CAPI_CLASSID;
|
|
|
|
typedef
|
|
enum
|
|
{
|
|
STATUS_NO_ERROR, //Prefix successfully leased, renewed.
|
|
STATUS_UNSPECIFIED_FAILURE, //Some unspecified failure occurred while trying to process the prefix.
|
|
STATUS_NO_BINDING = 3, //The server doesn't have binding for the prefix.
|
|
STATUS_NOPREFIX_AVAIL = 6 //The server doesn't have prefix to offer to the requesting client.
|
|
}StatusCode;
|
|
|
|
typedef struct _DHCPV6Prefix{
|
|
UCHAR prefix[16]; //128 bit prefix
|
|
DWORD prefixLength; //(48-64 bits)
|
|
DWORD preferredLifeTime; //The Preferred Lifetime of the Prefix returned or requested in seconds
|
|
DWORD validLifeTime; //The Valid Lifetime of the Prefix returned or requested in seconds
|
|
StatusCode status; //The status code returned by the server for the prefix
|
|
}DHCPV6Prefix, *PDHCPV6Prefix, *LPDHCPV6Prefix;
|
|
|
|
typedef struct _DHCPV6PrefixLeaseInformation {
|
|
DWORD nPrefixes; // number of prefixes.
|
|
__field_ecount(nPrefixes) LPDHCPV6Prefix prefixArray; // Array of prefixes
|
|
DWORD iaid; //The 32 bit Identity Association identifier for the prefix option.
|
|
time_t T1; //The absolute renewal time for the prefixes in seconds
|
|
time_t T2; //The absolute rebind time for the prefixes in seconds
|
|
time_t MaxLeaseExpirationTime; //The absolute maximum lease expiration time of all the prefix leases in this structure.
|
|
time_t LastRenewalTime; // The absolute time at which the last renewal for the prefixes happened.
|
|
StatusCode status; //The status code returned by the server for the IAPD
|
|
__field_bcount(ServerIdLen) LPBYTE ServerId; // The server DUID from which the prefix is received. This is used in subsequent Renews.
|
|
DWORD ServerIdLen; // The length of the above DUID data.
|
|
} DHCPV6PrefixLeaseInformation, *PDHCPV6PrefixLeaseInformation, *LPDHCPV6PrefixLeaseInformation;
|
|
|
|
VOID
|
|
APIENTRY
|
|
Dhcpv6CApiInitialize(
|
|
OUT LPDWORD Version
|
|
);
|
|
|
|
VOID
|
|
APIENTRY
|
|
Dhcpv6CApiCleanup(
|
|
VOID
|
|
);
|
|
|
|
DWORD // win32 status
|
|
APIENTRY
|
|
Dhcpv6RequestParams( // request parameters of client
|
|
IN BOOL forceNewInform,
|
|
IN LPVOID reserved,
|
|
__nullterminated IN LPWSTR adapterName,
|
|
IN LPDHCPV6CAPI_CLASSID classId,
|
|
IN OUT DHCPV6CAPI_PARAMS_ARRAY recdParams,
|
|
IN LPBYTE buffer,
|
|
IN OUT LPDWORD pSize
|
|
);
|
|
|
|
DWORD
|
|
APIENTRY
|
|
Dhcpv6RequestPrefix(
|
|
IN __nullterminated LPWSTR adapterName,
|
|
IN LPDHCPV6CAPI_CLASSID pclassId,
|
|
IN OUT LPDHCPV6PrefixLeaseInformation prefixleaseInfo,
|
|
__deref_out OUT DWORD* pdwTimeToWait
|
|
);
|
|
|
|
DWORD
|
|
APIENTRY
|
|
Dhcpv6RenewPrefix(
|
|
IN __nullterminated LPWSTR adapterName,
|
|
IN LPDHCPV6CAPI_CLASSID pclassId,
|
|
IN OUT LPDHCPV6PrefixLeaseInformation prefixleaseInfo,
|
|
__deref_out OUT DWORD* pdwTimeToWait,
|
|
IN DWORD bValidatePrefix
|
|
);
|
|
|
|
DWORD
|
|
APIENTRY
|
|
Dhcpv6ReleasePrefix(
|
|
__nullterminated IN LPWSTR adapterName,
|
|
IN LPDHCPV6CAPI_CLASSID classId,
|
|
IN LPDHCPV6PrefixLeaseInformation leaseInfo
|
|
);
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
//================================================================================
|
|
// end of file
|
|
//================================================================================
|
|
#endif _DHCPV6CSDK_
|
|
|
|
|