[1166] | 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
|
---|