| /** | 
 |  * 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 _MADCAPCL_H_ | 
 | #define _MADCAPCL_H_ | 
 |  | 
 | #include <winternl.h> | 
 |  | 
 | #ifdef __cplusplus | 
 | extern "C" { | 
 | #endif | 
 |  | 
 | #include <time.h> | 
 |  | 
 | #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; | 
 |  | 
 |   typedef struct _MCAST_CLIENT_UID { | 
 |     LPBYTE ClientUID; | 
 |     DWORD ClientUIDLength; | 
 |   } MCAST_CLIENT_UID,*LPMCAST_CLIENT_UID; | 
 |  | 
 |   typedef struct _MCAST_SCOPE_CTX { | 
 |     IPNG_ADDRESS ScopeID; | 
 |     IPNG_ADDRESS Interface; | 
 |     IPNG_ADDRESS ServerID; | 
 |   } MCAST_SCOPE_CTX,*PMCAST_SCOPE_CTX; | 
 |  | 
 |   typedef struct _MCAST_SCOPE_ENTRY { | 
 |     MCAST_SCOPE_CTX ScopeCtx; | 
 |     IPNG_ADDRESS LastAddr; | 
 |     DWORD TTL; | 
 |     UNICODE_STRING ScopeDesc; | 
 |   } MCAST_SCOPE_ENTRY,*PMCAST_SCOPE_ENTRY; | 
 |  | 
 |   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; | 
 |  | 
 |   typedef struct _MCAST_LEASE_RESPONSE { | 
 |     LONG LeaseStartTime; | 
 |     LONG LeaseEndTime; | 
 |     IPNG_ADDRESS ServerAddress; | 
 |     WORD AddrCount; | 
 |     PBYTE pAddrBuf; | 
 |   } MCAST_LEASE_RESPONSE,*PMCAST_LEASE_RESPONSE; | 
 |  | 
 |   DWORD WINAPI McastApiStartup(PDWORD Version); | 
 |   VOID WINAPI McastApiCleanup(VOID); | 
 |   DWORD WINAPI McastGenUID(LPMCAST_CLIENT_UID pRequestID); | 
 |   DWORD WINAPI McastEnumerateScopes(IP_ADDR_FAMILY AddrFamily,WINBOOL ReQuery,PMCAST_SCOPE_ENTRY pScopeList,PDWORD pScopeLen,PDWORD pScopeCount); | 
 |   DWORD WINAPI McastRequestAddress(IP_ADDR_FAMILY AddrFamily,LPMCAST_CLIENT_UID pRequestID,PMCAST_SCOPE_CTX pScopeCtx,PMCAST_LEASE_REQUEST pAddrRequest,PMCAST_LEASE_RESPONSE pAddrResponse); | 
 |   DWORD WINAPI McastRenewAddress(IP_ADDR_FAMILY AddrFamily,LPMCAST_CLIENT_UID pRequestID,PMCAST_LEASE_REQUEST pRenewRequest,PMCAST_LEASE_RESPONSE pRenewResponse); | 
 |   DWORD WINAPI McastReleaseAddress(IP_ADDR_FAMILY AddrFamily,LPMCAST_CLIENT_UID pRequestID,PMCAST_LEASE_REQUEST pReleaseRequest); | 
 |  | 
 | #ifdef __cplusplus | 
 | } | 
 | #endif | 
 | #endif |