home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Internet 2000 May / MICD_2000_05.iso / CBuilder5 / INSTALL / DATA1.CAB / Program_Built_Files / Include / bdnapi.h < prev    next >
C/C++ Source or Header  |  2000-02-01  |  10KB  |  449 lines

  1. #ifndef __include_bdnapi_h
  2. #pragma option push -b -a8 -pc -A- /*P_O_Push*/
  3. #define    __include_bdnapi_h
  4.  
  5. #include <winsock2.h>
  6. #include <time.h>
  7.  
  8. #ifndef MSBDNAPI
  9. #define MSBDNAPI __declspec( dllimport )
  10. #endif
  11.  
  12. #ifndef EXTERN_C
  13. #ifdef __cplusplus
  14. #define EXTERN_C extern "C"
  15. #else
  16. #define EXTERN_C
  17. #endif
  18. #endif
  19.  
  20. #ifndef    BDN_TIME_UNBOUND
  21. #define    BDN_TIME_UNBOUND    ((time_t)0)
  22. #endif
  23.  
  24. #ifndef    BDN_SLOT_NONE
  25. #define    BDN_SLOT_NONE        0xFFFFFFFFUL
  26. #endif
  27.  
  28. // opaque handles
  29. typedef struct BDN_SERVICE * HBDNSERVICE;
  30. typedef struct BDN_CONN * HBDNCONN;
  31.  
  32. typedef struct BDN_RSVP {
  33.     DWORD        Version;
  34.     DWORD        Size;
  35.     DWORD        ReservationID;
  36.     FLOWSPEC    Flowspec;
  37.     time_t        StartTime;
  38.     time_t        EndTime;
  39. //    SOCKADDR    rsvpAddr;            // This is never actually used
  40. } BDN_RSVP, * LPBDN_RSVP, MSBDNRSVP, *PMSBDNRSVP, *LPMSBDNRSVP;
  41.  
  42. #define    BDN_RSVP_VERSION    0x0100
  43.  
  44. typedef struct tagBDN_HARDWARE_ADDR {
  45.     WORD        Type;
  46.     LPVOID        Address;
  47.     WORD        AddressLength;
  48. } BDN_HARDWARE_ADDR, * LPBDN_HARDWARE_ADDR;
  49.  
  50. #define    BDN_HARDWARE_TYPE_IEEE8023    1
  51. #define    BDN_HARDWARE_TYPE_ATM        2
  52.  
  53.  
  54. typedef struct BDN_VALUE {
  55.     WORD                    Type;
  56.     union {
  57.         SOCKET_ADDRESS        SocketAddress;
  58.         struct {
  59.             union {
  60.                 LPSTR        AnsiString;
  61.                 LPWSTR        UnicodeString;
  62.                 LPTSTR        String;
  63.             };
  64.             DWORD            StringMaxLength;
  65.         };
  66.         DWORD                Dword;
  67.     };
  68. } BDN_VALUE, * LPBDN_VALUE;
  69.  
  70. // BDN_VALUE.Type
  71. #define BDN_VALUE_ANSI_STRING        1
  72. #define    BDN_VALUE_UNICODE_STRING    2
  73. #define    BDN_VALUE_DWORD                3
  74. #define BDN_VALUE_SOCKADDR            4
  75.  
  76. #ifdef _UNICODE
  77. #define    BDN_VALUE_STRING            BDN_VALUE_UNICODE_STRING
  78. #else
  79. #define    BDN_VALUE_STRING            BDN_VALUE_ANSI_STRING
  80. #endif
  81.  
  82. // value identifiers used with BDN service
  83. #define    BDN_SERVICE_BRIDGE        1
  84. #define    BDN_SERVICE_ARS            2
  85. #define    BDN_SERVICE_BRS            3
  86. #define    BDN_SERVICE_GLOBAL_ADDR    4
  87. #define    BDN_SERVICE_LOCAL_ADDR    5
  88. #define    BDN_SERVICE_APPLICATION    6
  89. #define    BDN_SERVICE_CONTENT_SERVICE        7
  90.  
  91.  
  92. EXTERN_C HRESULT WINAPI BdnLookupServiceA (LPCSTR, HBDNSERVICE *);
  93. EXTERN_C HRESULT WINAPI BdnLookupServiceW (LPCWSTR, HBDNSERVICE *);
  94.  
  95. EXTERN_C HRESULT WINAPI BdnServiceCreate (HBDNSERVICE *);
  96.  
  97. EXTERN_C HRESULT WINAPI BdnServiceClose (HBDNSERVICE);
  98.  
  99. EXTERN_C HRESULT WINAPI BdnReserveAddress
  100. (    HBDNSERVICE,
  101.     time_t,
  102.     time_t,
  103.     DWORD,
  104.     DWORD,
  105.     const SOCKET_ADDRESS *
  106. );
  107.  
  108. EXTERN_C HRESULT WINAPI BdnReleaseAddress
  109. (    HBDNSERVICE,
  110.     time_t,
  111.     const SOCKET_ADDRESS *
  112. );
  113.  
  114. EXTERN_C HRESULT WINAPI BdnServiceSetValue
  115. (    HBDNSERVICE,
  116.     DWORD,
  117.     const BDN_VALUE *
  118. );
  119.  
  120. EXTERN_C HRESULT WINAPI BdnServiceGetValue
  121. (    HBDNSERVICE,
  122.     DWORD,
  123.     BDN_VALUE *
  124. );
  125.  
  126. EXTERN_C HRESULT WINAPI BdnServiceSetValueStringA
  127. (    HBDNSERVICE,
  128.     DWORD,
  129.     LPCSTR
  130. );
  131.  
  132. EXTERN_C HRESULT WINAPI BdnServiceSetValueStringW
  133. (    HBDNSERVICE,
  134.     DWORD,
  135.     LPCWSTR
  136. );
  137.  
  138. EXTERN_C HRESULT WINAPI BdnServiceGetValueStringA
  139. (    HBDNSERVICE,
  140.     DWORD,
  141.     LPSTR,
  142.     DWORD
  143. );
  144.  
  145. EXTERN_C HRESULT WINAPI BdnServiceGetValueStringW
  146. (    HBDNSERVICE,
  147.     DWORD,
  148.     LPWSTR,
  149.     DWORD
  150. );
  151.  
  152. EXTERN_C HRESULT WINAPI BdnCreateRegulatedMulticast
  153. (    HBDNSERVICE            service,
  154.     LPBDN_RSVP            reservation,
  155.     HBDNCONN *            conn
  156. );
  157.  
  158. EXTERN_C HRESULT WINAPI BdnCreateRegulatedMulticastRaw
  159. (    SOCKET                sock,
  160.     LPBDN_RSVP            reservation,
  161.     HBDNCONN *            conn
  162. );
  163.  
  164. EXTERN_C HRESULT WINAPI BdnOpenTunnel
  165. (    HBDNSERVICE                service,
  166.     const SOCKET_ADDRESS *    destination_address,
  167.     BYTE                    mttl,
  168.     DWORD                    reservation_id,
  169.     HBDNCONN *                conn
  170. );
  171.  
  172. EXTERN_C HRESULT WINAPI BdnReserveBandwidthA
  173. (    HBDNSERVICE        service,
  174.     time_t            start_time,
  175.     time_t            end_time,
  176.     DWORD            slot,
  177.     const FLOWSPEC *    flowspec,
  178.     LPCSTR            description,
  179.     DWORD *            resv_id
  180. );
  181.  
  182. EXTERN_C HRESULT WINAPI BdnReserveBandwidthW
  183. (    HBDNSERVICE        service,
  184.     time_t            start_time,
  185.     time_t            end_time,
  186.     DWORD            slot,
  187.     const FLOWSPEC *    flowspec,
  188.     LPCWSTR            description,
  189.     DWORD *            resv_id
  190. );
  191.  
  192. EXTERN_C HRESULT WINAPI BdnGetReservationA
  193. (    HBDNSERVICE        service,
  194.     DWORD            resv_id,
  195.     BDN_RSVP *        resv,
  196.     LPSTR            description,
  197.     DWORD            description_len
  198. );
  199.  
  200. EXTERN_C HRESULT WINAPI BdnGetReservationW
  201. (    HBDNSERVICE        service,
  202.     DWORD            resv_id,
  203.     BDN_RSVP *        resv,
  204.     LPWSTR            description,
  205.     DWORD            description_len
  206. );
  207.  
  208. EXTERN_C HRESULT WINAPI BdnLookupReservationA
  209. (    HBDNSERVICE        hBdnService,
  210.     LPCSTR            szDescription,
  211.     time_t            StartTime,
  212.     time_t            EndTime,
  213.     BDN_RSVP *        lpReservation,
  214.     DWORD *            lpReservationCount        // in-out parameter
  215. );
  216.  
  217. EXTERN_C HRESULT WINAPI BdnLookupReservationW
  218. (    HBDNSERVICE        hBdnService,
  219.     LPCWSTR            szDescription,
  220.     time_t            StartTime,
  221.     time_t            EndTime,
  222.     BDN_RSVP *        lpReservation,
  223.     DWORD *            lpReservationCount        // in-out parameter
  224. );
  225.  
  226. EXTERN_C HRESULT WINAPI BdnClearReservation
  227. (    HBDNSERVICE        hBdnService,
  228.     DWORD            dwReservationID
  229. );
  230.  
  231. EXTERN_C INT WINAPI BdnSend
  232. (    HBDNCONN,
  233.     const void *,
  234.     WORD);
  235.  
  236. EXTERN_C INT WINAPI BdnSendTo (
  237.     HBDNCONN        hBdnConn,
  238.     const SOCKET_ADDRESS * lpDestAddress,
  239.     WORD            wDestPort,
  240.     const BDN_HARDWARE_ADDR * lpHardwareAddress,
  241.     const void *    lpBuffer,
  242.     WORD            nBufferLength
  243. );
  244.  
  245. EXTERN_C INT WINAPI BdnSendRaw (
  246.     HBDNCONN        hBdnConn,
  247.     WORD            wProtocol,
  248.     const BDN_HARDWARE_ADDR * lpHardwareAddress,
  249.     const void *    lpBuffer,
  250.     WORD            nBufferLength
  251. );
  252.  
  253.  
  254. #ifdef _UNICODE
  255. #define    BdnGetReservation                BdnGetReservationW
  256. #define    BdnLookupReservation            BdnLookupReservationW
  257. #define    BdnLookupService                BdnLookupServiceW
  258. #define    BdnServiceSetValueString        BdnServiceSetValueStringW
  259. #else
  260. #define    BdnGetReservation                BdnGetReservationA
  261. #define    BdnLookupReservation            BdnLookupReservationA
  262. #define    BdnLookupService                BdnLookupServiceA
  263. #define    BdnServiceSetValueString        BdnServiceSetValueStringA
  264. #endif
  265.  
  266.  
  267. // #define MSBDNEDENIED        -1; // ???
  268. // #define MSBDNEINVALID       -2; // ???
  269.  
  270.  
  271. EXTERN_C MSBDNAPI INT WINAPI msbdnReserveAddress(
  272.     LPCSADDR_INFO lpcsServerAddr,
  273.     time_t StartTime,
  274.     time_t EndTime,
  275.     WORD wFLags,
  276.     LPSOCKET_ADDRESS lpDestAddr
  277. );
  278.  
  279. #define MSBDN_INET_EXISTING    0x0100  // The lpDestAddr is already filled with an existing value that the server should use for the reservation.
  280. #define MSBDN_INET_GLOBAL    0x0001  // Reserve an internet-wide globally unique IP address for the duration is the reservation.  TTL >= 127.
  281. #define MSBDN_INET_NETWORK    0x0002  // Reserve a IP address that is unique to the organizationÆs network. For DSS, this is equivalent to their entire Satellite.
  282. #define MSBDN_INET_SUBNET    0x0003  // Reserve an address that is unique to a local subnet. For DSS, this is equivilent to a single channel or a group of channels, depending on how the network is configured.
  283.     
  284.  
  285. EXTERN_C MSBDNAPI INT WINAPI msbdnRelinquishAddress(
  286.     LPCSADDR_INFO lpcsServerAddr,
  287.     time_t FromTime,
  288.     LPSOCKET_ADDRESS lpDestAddr
  289. );
  290.  
  291.  
  292. EXTERN_C MSBDNAPI INT WINAPI msbdnReserveBandwidth(
  293.     LPCSADDR_INFO lpcsServerAddr,
  294.     time_t StartTime,
  295.     time_t EndTime,
  296.     LPFLOWSPEC lpFlowSpec,
  297.     LPCTSTR lpszDescription,
  298.     DWORD *lpReservationID
  299. );
  300.  
  301.  
  302. EXTERN_C MSBDNAPI INT WINAPI msbdnGetReservation(
  303.     LPCSADDR_INFO lpcsServerAddr,
  304.     DWORD dwReservationID, 
  305.     LPMSBDNRSVP lpReservation,
  306.     LPSTR lpszDescription,
  307.     DWORD dwDescriptionLength
  308. );
  309.  
  310.  
  311. EXTERN_C MSBDNAPI INT WINAPI msbdnLookupReservation(
  312.     LPCSADDR_INFO lpcsServerAddr,
  313.     LPCSTR szDescription,
  314.     time_t StartTime,
  315.     time_t EndTime,
  316.     LPMSBDNRSVP lpReservation,
  317.     DWORD *lpdwReservationCount
  318. );
  319.  
  320.  
  321. EXTERN_C MSBDNAPI INT WINAPI msbdnClearReservation(
  322.     LPCSADDR_INFO lpcsServerAddr,
  323.     DWORD dwReservationID
  324. );
  325.  
  326. EXTERN_C MSBDNAPI INT WINAPI msbdnForwardMulticast(
  327.     LPCSADDR_INFO lpcsBridgeAddr,
  328.     LPSOCKET_ADDRESS lpDestAddr,
  329.     WORD wTTL,
  330.     DWORD dwReservationID
  331. );
  332.  
  333. EXTERN_C MSBDNAPI INT WINAPI msbdnStopMulticast(
  334.     LPCSADDR_INFO lpcsBridgeAddr,
  335.     LPSOCKET_ADDRESS lpDestAddr
  336. );
  337.  
  338. EXTERN_C MSBDNAPI HBDNCONN msbdnCreateRegulatedMulticast (
  339.     SOCKET hSocket,
  340.     LPMSBDNRSVP lpReservation
  341. ); 
  342.  
  343. EXTERN_C MSBDNAPI HBDNCONN msbdnOpenTunnel (
  344.     LPCSADDR_INFO lpcsBridgeAddr,
  345.     LPSOCKET_ADDRESS lpDestAddr,
  346.     WORD wTTL,
  347.     DWORD dwReservationID
  348. ); 
  349.  
  350. EXTERN_C MSBDNAPI INT WINAPI msbdnSend (
  351.     HBDNCONN hBdnConn,
  352.     LPVOID lpBuffer,
  353.     WORD nBytes
  354. );
  355.  
  356. EXTERN_C MSBDNAPI INT WINAPI msbdnSendTo (
  357.     HBDNCONN hBdnCon,
  358.     LPSOCKET_ADDRESS lpDestAddress,
  359.     WORD wDestPort,
  360.     LPVOID lpHardwareAddress,
  361.     LPVOID lpBuffer,
  362.     WORD nBytes
  363. );
  364.  
  365. EXTERN_C MSBDNAPI INT WINAPI msbdnSendRaw (
  366.     HBDNCONN hBdnCon,
  367.     WORD wProtocol,
  368.     LPVOID lpHardwareAddress,
  369.     LPVOID lpBuffer,
  370.     WORD nBytes
  371. );
  372.  
  373.  
  374. EXTERN_C MSBDNAPI INT WINAPI msbdnClose (
  375.     HBDNCONN hBdnCon
  376. );
  377.  
  378.  
  379. EXTERN_C MSBDNAPI INT WINAPI msbdnReserveAddressEx(
  380.     LPCSTR szServer,
  381.     time_t StartTime,
  382.     time_t EndTime,
  383.     WORD wFLags,
  384.     LPCSTR szDestAddr,
  385.     DWORD dwDestAddrLength
  386. );
  387.  
  388. EXTERN_C MSBDNAPI INT WINAPI msbdnRelinquishAddressEx(
  389.     LPCSTR szServer,
  390.     time_t FromTime,
  391.     LPCSTR szDestAddr
  392. );
  393.  
  394. EXTERN_C MSBDNAPI INT WINAPI msbdnReserveBandwidthEx(
  395.     LPCSTR szServer,
  396.     time_t StartTime,
  397.     time_t EndTime,
  398.     LPFLOWSPEC lpFlowSpec,
  399.     LPCTSTR lpszDescription,
  400.     DWORD *lpReservationID
  401. );
  402.  
  403.  
  404. EXTERN_C MSBDNAPI INT WINAPI msbdnGetReservationEx(
  405.     LPCSTR szServer,
  406.     DWORD dwReservationID, 
  407.     LPMSBDNRSVP lpReservation,
  408.     LPSTR lpszDescription,
  409.     DWORD dwDescriptionLength
  410. );
  411.  
  412.  
  413. EXTERN_C MSBDNAPI INT WINAPI msbdnLookupReservationEx(
  414.     LPCSTR szServer,
  415.     LPCSTR szDescription,
  416.     time_t StartTime,
  417.     time_t EndTime,
  418.     LPMSBDNRSVP lpReservation,
  419.     DWORD *lpdwReservationCount
  420. );
  421.  
  422. EXTERN_C MSBDNAPI INT WINAPI msbdnClearReservationEx(
  423.     LPCSTR szServer,
  424.     DWORD dwReservationID
  425. );
  426.  
  427. EXTERN_C MSBDNAPI INT WINAPI msbdnForwardMulticastEx(
  428.     LPCSTR szBridge,
  429.     LPCSTR szDestAddr,
  430.     DWORD dwReservationID
  431. );
  432.  
  433. EXTERN_C MSBDNAPI INT WINAPI msbdnStopMulticastEx(
  434.     LPCSTR szBridge,
  435.     LPCSTR szDestAddr
  436. );
  437.  
  438. EXTERN_C MSBDNAPI HBDNCONN WINAPI msbdnOpenTunnelEx(
  439.     LPCSTR szBridge,
  440.     LPCSTR szDestAddr,
  441.     WORD wDestPort,
  442.     WORD wTTL,
  443.     DWORD dwReservationID
  444. ); 
  445.  
  446.  
  447. #pragma option pop /*P_O_Pop*/
  448. #endif // __include_bdnapi_h
  449.