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