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 81