| 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 _MADCAPCL_H_ | 
 
 
 
 
 | 7 | #define _MADCAPCL_H_ | 
 
 
 
 
 | 8 |  | 
 
 
 
 
 | 9 | #include <winternl.h> | 
 
 
 
 
 | 10 |  | 
 
 
 
 
 | 11 | #ifdef __cplusplus | 
 
 
 
 
 | 12 | extern "C" { | 
 
 
 
 
 | 13 | #endif | 
 
 
 
 
 | 14 |  | 
 
 
 
 
 | 15 | #include <time.h> | 
 
 
 
 
 | 16 |  | 
 
 
 
 
 | 17 | #define MCAST_CLIENT_ID_LEN 17 | 
 
 
 
 
 | 18 |  | 
 
 
 
 
 | 19 | enum { | 
 
 
 
 
 | 20 | MCAST_API_VERSION_0 = 0,MCAST_API_VERSION_1 | 
 
 
 
 
 | 21 | }; | 
 
 
 
 
 | 22 |  | 
 
 
 
 
 | 23 | #define MCAST_API_CURRENT_VERSION MCAST_API_VERSION_1 | 
 
 
 
 
 | 24 |  | 
 
 
 
 
 | 25 | typedef unsigned short IP_ADDR_FAMILY; | 
 
 
 
 
 | 26 |  | 
 
 
 
 
 | 27 | typedef union _IPNG_ADDRESS { | 
 
 
 
 
 | 28 | DWORD IpAddrV4; | 
 
 
 
 
 | 29 | BYTE IpAddrV6[16]; | 
 
 
 
 
 | 30 | } IPNG_ADDRESS,*PIPNG_ADDRESS; | 
 
 
 
 
 | 31 |  | 
 
 
 
 
 | 32 | typedef struct _MCAST_CLIENT_UID { | 
 
 
 
 
 | 33 | LPBYTE ClientUID; | 
 
 
 
 
 | 34 | DWORD ClientUIDLength; | 
 
 
 
 
 | 35 | } MCAST_CLIENT_UID,*LPMCAST_CLIENT_UID; | 
 
 
 
 
 | 36 |  | 
 
 
 
 
 | 37 | typedef struct _MCAST_SCOPE_CTX { | 
 
 
 
 
 | 38 | IPNG_ADDRESS ScopeID; | 
 
 
 
 
 | 39 | IPNG_ADDRESS Interface; | 
 
 
 
 
 | 40 | IPNG_ADDRESS ServerID; | 
 
 
 
 
 | 41 | } MCAST_SCOPE_CTX,*PMCAST_SCOPE_CTX; | 
 
 
 
 
 | 42 |  | 
 
 
 
 
 | 43 | typedef struct _MCAST_SCOPE_ENTRY { | 
 
 
 
 
 | 44 | MCAST_SCOPE_CTX ScopeCtx; | 
 
 
 
 
 | 45 | IPNG_ADDRESS LastAddr; | 
 
 
 
 
 | 46 | DWORD TTL; | 
 
 
 
 
 | 47 | UNICODE_STRING ScopeDesc; | 
 
 
 
 
 | 48 | } MCAST_SCOPE_ENTRY,*PMCAST_SCOPE_ENTRY; | 
 
 
 
 
 | 49 |  | 
 
 
 
 
 | 50 | typedef struct _MCAST_LEASE_REQUEST { | 
 
 
 
 
 | 51 | LONG LeaseStartTime; | 
 
 
 
 
 | 52 | LONG MaxLeaseStartTime; | 
 
 
 
 
 | 53 | DWORD LeaseDuration; | 
 
 
 
 
 | 54 | DWORD MinLeaseDuration; | 
 
 
 
 
 | 55 | IPNG_ADDRESS ServerAddress; | 
 
 
 
 
 | 56 | WORD MinAddrCount; | 
 
 
 
 
 | 57 | WORD AddrCount; | 
 
 
 
 
 | 58 | PBYTE pAddrBuf; | 
 
 
 
 
 | 59 | } MCAST_LEASE_REQUEST,*PMCAST_LEASE_REQUEST; | 
 
 
 
 
 | 60 |  | 
 
 
 
 
 | 61 | typedef struct _MCAST_LEASE_RESPONSE { | 
 
 
 
 
 | 62 | LONG LeaseStartTime; | 
 
 
 
 
 | 63 | LONG LeaseEndTime; | 
 
 
 
 
 | 64 | IPNG_ADDRESS ServerAddress; | 
 
 
 
 
 | 65 | WORD AddrCount; | 
 
 
 
 
 | 66 | PBYTE pAddrBuf; | 
 
 
 
 
 | 67 | } MCAST_LEASE_RESPONSE,*PMCAST_LEASE_RESPONSE; | 
 
 
 
 
 | 68 |  | 
 
 
 
 
 | 69 | DWORD WINAPI McastApiStartup(PDWORD Version); | 
 
 
 
 
 | 70 | VOID WINAPI McastApiCleanup(VOID); | 
 
 
 
 
 | 71 | DWORD WINAPI McastGenUID(LPMCAST_CLIENT_UID pRequestID); | 
 
 
 
 
 | 72 | DWORD WINAPI McastEnumerateScopes(IP_ADDR_FAMILY AddrFamily,WINBOOL ReQuery,PMCAST_SCOPE_ENTRY pScopeList,PDWORD pScopeLen,PDWORD pScopeCount); | 
 
 
 
 
 | 73 | DWORD WINAPI McastRequestAddress(IP_ADDR_FAMILY AddrFamily,LPMCAST_CLIENT_UID pRequestID,PMCAST_SCOPE_CTX pScopeCtx,PMCAST_LEASE_REQUEST pAddrRequest,PMCAST_LEASE_RESPONSE pAddrResponse); | 
 
 
 
 
 | 74 | DWORD WINAPI McastRenewAddress(IP_ADDR_FAMILY AddrFamily,LPMCAST_CLIENT_UID pRequestID,PMCAST_LEASE_REQUEST pRenewRequest,PMCAST_LEASE_RESPONSE pRenewResponse); | 
 
 
 
 
 | 75 | DWORD WINAPI McastReleaseAddress(IP_ADDR_FAMILY AddrFamily,LPMCAST_CLIENT_UID pRequestID,PMCAST_LEASE_REQUEST pReleaseRequest); | 
 
 
 
 
 | 76 |  | 
 
 
 
 
 | 77 | #ifdef __cplusplus | 
 
 
 
 
 | 78 | } | 
 
 
 
 
 | 79 | #endif | 
 
 
 
 
 | 80 | #endif |