madcapcl.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:7k
- // Copyright (c) 1990-1999 Microsoft Corporation
- #ifndef _MADCAPCL_H_
- #define _MADCAPCL_H_
- #ifdef __cplusplus
- extern "C" {
- #endif
- #include <time.h>
- #if _MSC_VER > 1000
- #pragma once
- #endif
- #define MCAST_CLIENT_ID_LEN 17
- enum {
- MCAST_API_VERSION_0 = 0,
- MCAST_API_VERSION_1
- };
- #define MCAST_API_CURRENT_VERSION MCAST_API_VERSION_1
- typedef unsigned short IP_ADDR_FAMILY;
- typedef union _IPNG_ADDRESS {
- DWORD IpAddrV4;
- BYTE IpAddrV6[16];
- } IPNG_ADDRESS, *PIPNG_ADDRESS;
- /*++
- Description:
- This union is used to pass both IPv4 and IPv6 style address.
- Members:
- IpAddrV4 - IPv4 style address
- IpAddrV6 - IPv6 style address
- --*/
- typedef struct _MCAST_CLIENT_UID {
- LPBYTE ClientUID;
- DWORD ClientUIDLength;
- } MCAST_CLIENT_UID, *LPMCAST_CLIENT_UID;
- /*++
- Description:
- This describes the unique clientID for each request.
- Members:
- ClientUID - Buffer containing the clientID
- ClientUIDLength - The size of the above buffer in bytes.
- --*/
- typedef struct _MCAST_SCOPE_CTX {
- IPNG_ADDRESS ScopeID;
- IPNG_ADDRESS Interface;
- IPNG_ADDRESS ServerID;
- } MCAST_SCOPE_CTX, *PMCAST_SCOPE_CTX;
- /*++
- Description:
- This defines the handle of the scope from which the address
- is to be allocated/renewed/released.
- Members:
- ScopeID - Scope ID is essentially first ip of the scope
- Interface - Interface on which this scope was found
- ServerID - IPAddress of the MADCAP server
- --*/
- typedef struct _MCAST_SCOPE_ENTRY {
- MCAST_SCOPE_CTX ScopeCtx;
- IPNG_ADDRESS LastAddr;
- DWORD TTL;
- UNICODE_STRING ScopeDesc;
- } MCAST_SCOPE_ENTRY, *PMCAST_SCOPE_ENTRY;
- /*++
- Description:
- This structure contains all the info pertaining to a given multicast
- scope.
- Members:
- ScopeCtx - the handle for this scope
- LastAddr - last addr of the scope
- TTL - TTL value of this scope.
- ScopeDesc - user friendly description of scope
- --*/
- typedef struct _MCAST_LEASE_REQUEST {
- LONG LeaseStartTime;
- LONG MaxLeaseStartTime;
- DWORD LeaseDuration;
- DWORD MinLeaseDuration;
- IPNG_ADDRESS ServerAddress;
- WORD MinAddrCount;
- WORD AddrCount;
- PBYTE pAddrBuf;
- } MCAST_LEASE_REQUEST, *PMCAST_LEASE_REQUEST;
- /*++
- Description:
- This structure is used to describe the request parameters for
- requesting/renewing/releasing multicast addresses
- Members:
- LeaseStartTime - desired start time of the lease, pass 0 if desired start time
- is current time. The desired time is specified in the number of seconds elapsed
- since midnight (00:00:00), January 1, 1970, coordinated universal time.
- MaxLeaseStartTime - the maximum start time that the client is willing to accept.
- Where time is the number of seconds elapsed since midnight (00:00:00),
- January 1, 1970, coordinated universal time.
- LeaseDuration - desired lease time for the request, pass 0 if default
- lease time is requested.
- MinLeaseDuration - the minimum lease time that the client is willing
- to accept
- ServerAddress - server's ip address where this lease whas renewed/requested.
- pass 0 if unknown (e.g in McastRequestAddress)
- MinAddrCount - minimum number of addresses that the client is willing
- to accept
- AddrCount - the desired number of addresses requested/allocated/renewed.
- This also specifies the size of the array specified by Addr.
- pAddrBuf - buffer containing specific addresses being requested/renewed/released.
- For IPv4 it is a pointer to 4 byte addresses and for IPv6 it
- points to 16 byte chunks. Pass NULL if no specific addresses
- are requested.
- Remarks:
- In MCAST_API_VERSION_1 version, the MaxLeaseStartTime, MinLeaseDuration and
- MinAddrCount are ignored by the API implementation. However, the clients should
- set appropriate desired values for these members so as when the OS update brings
- new implementation of the APIs then the clients can take advantage of it.
- --*/
- typedef struct _MCAST_LEASE_RESPONSE {
- LONG LeaseStartTime;
- LONG LeaseEndTime;
- IPNG_ADDRESS ServerAddress;
- WORD AddrCount;
- PBYTE pAddrBuf;
- } MCAST_LEASE_RESPONSE, *PMCAST_LEASE_RESPONSE;
- /*++
- Description:
- This structure is used to pass the response of the operation of
- requesting/renewing/releasing multicast addresses.
- Members:
- LeaseStartTime - start time of the lease in number of seconds elapsed since
- midnight (00:00:00), January 1, 1970, coordinated universal time.
- LeaseEndTime - time when lease ends, where time is the number of seconds elapsed
- since midnight (00:00:00), January 1, 1970, coordinated universal time.
- ServerAddress - server's ip address where this lease is renewed/requested.
- AddrCount - number of addresses requested/allocated/renewed.
- This also specifies the size of the array specified by Addr.
- Addr - buffer containing addresses being requested/renewed/released. For IPv4
- it is a pointer to 4 byte addresses and for IPv6 it points to 16 byte chunks
- --*/
- DWORD
- APIENTRY
- McastApiStartup(
- IN OUT PDWORD Version
- );
- VOID
- APIENTRY
- McastApiCleanup(
- VOID
- );
- DWORD
- APIENTRY
- McastGenUID(
- IN OUT LPMCAST_CLIENT_UID pRequestID
- );
- DWORD
- APIENTRY
- McastEnumerateScopes(
- IN IP_ADDR_FAMILY AddrFamily,
- IN BOOL ReQuery,
- IN OUT PMCAST_SCOPE_ENTRY pScopeList,
- IN OUT PDWORD pScopeLen,
- OUT PDWORD pScopeCount
- );
- DWORD
- APIENTRY
- McastRequestAddress(
- IN IP_ADDR_FAMILY AddrFamily,
- IN LPMCAST_CLIENT_UID pRequestID,
- IN PMCAST_SCOPE_CTX pScopeCtx,
- IN PMCAST_LEASE_REQUEST pAddrRequest,
- IN OUT PMCAST_LEASE_RESPONSE pAddrResponse
- );
- DWORD
- APIENTRY
- McastRenewAddress(
- IN IP_ADDR_FAMILY AddrFamily,
- IN LPMCAST_CLIENT_UID pRequestID,
- IN PMCAST_LEASE_REQUEST pRenewRequest,
- IN OUT PMCAST_LEASE_RESPONSE pRenewResponse
- );
- DWORD
- APIENTRY
- McastReleaseAddress(
- IN IP_ADDR_FAMILY AddrFamily,
- IN LPMCAST_CLIENT_UID pRequestID,
- IN PMCAST_LEASE_REQUEST pReleaseRequest
- );
- #ifdef __cplusplus
- }
- #endif
- #endif _MADCAPCL_H_