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
12extern "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