Home | History | Annotate | Download | only in include
      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
     81