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