madcapcl.h 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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. #include <winternl.h>
  9. #ifdef __cplusplus
  10. extern "C" {
  11. #endif
  12. #include <time.h>
  13. #define MCAST_CLIENT_ID_LEN 17
  14. enum {
  15. MCAST_API_VERSION_0 = 0,MCAST_API_VERSION_1
  16. };
  17. #define MCAST_API_CURRENT_VERSION MCAST_API_VERSION_1
  18. typedef unsigned short IP_ADDR_FAMILY;
  19. typedef union _IPNG_ADDRESS {
  20. DWORD IpAddrV4;
  21. BYTE IpAddrV6[16];
  22. } IPNG_ADDRESS,*PIPNG_ADDRESS;
  23. typedef struct _MCAST_CLIENT_UID {
  24. LPBYTE ClientUID;
  25. DWORD ClientUIDLength;
  26. } MCAST_CLIENT_UID,*LPMCAST_CLIENT_UID;
  27. typedef struct _MCAST_SCOPE_CTX {
  28. IPNG_ADDRESS ScopeID;
  29. IPNG_ADDRESS Interface;
  30. IPNG_ADDRESS ServerID;
  31. } MCAST_SCOPE_CTX,*PMCAST_SCOPE_CTX;
  32. typedef struct _MCAST_SCOPE_ENTRY {
  33. MCAST_SCOPE_CTX ScopeCtx;
  34. IPNG_ADDRESS LastAddr;
  35. DWORD TTL;
  36. UNICODE_STRING ScopeDesc;
  37. } MCAST_SCOPE_ENTRY,*PMCAST_SCOPE_ENTRY;
  38. typedef struct _MCAST_LEASE_REQUEST {
  39. LONG LeaseStartTime;
  40. LONG MaxLeaseStartTime;
  41. DWORD LeaseDuration;
  42. DWORD MinLeaseDuration;
  43. IPNG_ADDRESS ServerAddress;
  44. WORD MinAddrCount;
  45. WORD AddrCount;
  46. PBYTE pAddrBuf;
  47. } MCAST_LEASE_REQUEST,*PMCAST_LEASE_REQUEST;
  48. typedef struct _MCAST_LEASE_RESPONSE {
  49. LONG LeaseStartTime;
  50. LONG LeaseEndTime;
  51. IPNG_ADDRESS ServerAddress;
  52. WORD AddrCount;
  53. PBYTE pAddrBuf;
  54. } MCAST_LEASE_RESPONSE,*PMCAST_LEASE_RESPONSE;
  55. DWORD WINAPI McastApiStartup(PDWORD Version);
  56. VOID WINAPI McastApiCleanup(VOID);
  57. DWORD WINAPI McastGenUID(LPMCAST_CLIENT_UID pRequestID);
  58. DWORD WINAPI McastEnumerateScopes(IP_ADDR_FAMILY AddrFamily,WINBOOL ReQuery,PMCAST_SCOPE_ENTRY pScopeList,PDWORD pScopeLen,PDWORD pScopeCount);
  59. DWORD WINAPI McastRequestAddress(IP_ADDR_FAMILY AddrFamily,LPMCAST_CLIENT_UID pRequestID,PMCAST_SCOPE_CTX pScopeCtx,PMCAST_LEASE_REQUEST pAddrRequest,PMCAST_LEASE_RESPONSE pAddrResponse);
  60. DWORD WINAPI McastRenewAddress(IP_ADDR_FAMILY AddrFamily,LPMCAST_CLIENT_UID pRequestID,PMCAST_LEASE_REQUEST pRenewRequest,PMCAST_LEASE_RESPONSE pRenewResponse);
  61. DWORD WINAPI McastReleaseAddress(IP_ADDR_FAMILY AddrFamily,LPMCAST_CLIENT_UID pRequestID,PMCAST_LEASE_REQUEST pReleaseRequest);
  62. #ifdef __cplusplus
  63. }
  64. #endif
  65. #endif