| 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 |