449 lines
9.6 KiB
C
449 lines
9.6 KiB
C
|
#ifndef __include_bdnapi_h
|
|||
|
#pragma option push -b -a8 -pc -A- /*P_O_Push*/
|
|||
|
#define __include_bdnapi_h
|
|||
|
|
|||
|
#include <winsock2.h>
|
|||
|
#include <time.h>
|
|||
|
|
|||
|
#ifndef MSBDNAPI
|
|||
|
#define MSBDNAPI __declspec( dllimport )
|
|||
|
#endif
|
|||
|
|
|||
|
#ifndef EXTERN_C
|
|||
|
#ifdef __cplusplus
|
|||
|
#define EXTERN_C extern "C"
|
|||
|
#else
|
|||
|
#define EXTERN_C
|
|||
|
#endif
|
|||
|
#endif
|
|||
|
|
|||
|
#ifndef BDN_TIME_UNBOUND
|
|||
|
#define BDN_TIME_UNBOUND ((time_t)0)
|
|||
|
#endif
|
|||
|
|
|||
|
#ifndef BDN_SLOT_NONE
|
|||
|
#define BDN_SLOT_NONE 0xFFFFFFFFUL
|
|||
|
#endif
|
|||
|
|
|||
|
// opaque handles
|
|||
|
typedef struct BDN_SERVICE * HBDNSERVICE;
|
|||
|
typedef struct BDN_CONN * HBDNCONN;
|
|||
|
|
|||
|
typedef struct BDN_RSVP {
|
|||
|
DWORD Version;
|
|||
|
DWORD Size;
|
|||
|
DWORD ReservationID;
|
|||
|
FLOWSPEC Flowspec;
|
|||
|
time_t StartTime;
|
|||
|
time_t EndTime;
|
|||
|
// SOCKADDR rsvpAddr; // This is never actually used
|
|||
|
} BDN_RSVP, * LPBDN_RSVP, MSBDNRSVP, *PMSBDNRSVP, *LPMSBDNRSVP;
|
|||
|
|
|||
|
#define BDN_RSVP_VERSION 0x0100
|
|||
|
|
|||
|
typedef struct tagBDN_HARDWARE_ADDR {
|
|||
|
WORD Type;
|
|||
|
LPVOID Address;
|
|||
|
WORD AddressLength;
|
|||
|
} BDN_HARDWARE_ADDR, * LPBDN_HARDWARE_ADDR;
|
|||
|
|
|||
|
#define BDN_HARDWARE_TYPE_IEEE8023 1
|
|||
|
#define BDN_HARDWARE_TYPE_ATM 2
|
|||
|
|
|||
|
|
|||
|
typedef struct BDN_VALUE {
|
|||
|
WORD Type;
|
|||
|
union {
|
|||
|
SOCKET_ADDRESS SocketAddress;
|
|||
|
struct {
|
|||
|
union {
|
|||
|
LPSTR AnsiString;
|
|||
|
LPWSTR UnicodeString;
|
|||
|
LPTSTR String;
|
|||
|
};
|
|||
|
DWORD StringMaxLength;
|
|||
|
};
|
|||
|
DWORD Dword;
|
|||
|
};
|
|||
|
} BDN_VALUE, * LPBDN_VALUE;
|
|||
|
|
|||
|
// BDN_VALUE.Type
|
|||
|
#define BDN_VALUE_ANSI_STRING 1
|
|||
|
#define BDN_VALUE_UNICODE_STRING 2
|
|||
|
#define BDN_VALUE_DWORD 3
|
|||
|
#define BDN_VALUE_SOCKADDR 4
|
|||
|
|
|||
|
#ifdef _UNICODE
|
|||
|
#define BDN_VALUE_STRING BDN_VALUE_UNICODE_STRING
|
|||
|
#else
|
|||
|
#define BDN_VALUE_STRING BDN_VALUE_ANSI_STRING
|
|||
|
#endif
|
|||
|
|
|||
|
// value identifiers used with BDN service
|
|||
|
#define BDN_SERVICE_BRIDGE 1
|
|||
|
#define BDN_SERVICE_ARS 2
|
|||
|
#define BDN_SERVICE_BRS 3
|
|||
|
#define BDN_SERVICE_GLOBAL_ADDR 4
|
|||
|
#define BDN_SERVICE_LOCAL_ADDR 5
|
|||
|
#define BDN_SERVICE_APPLICATION 6
|
|||
|
#define BDN_SERVICE_CONTENT_SERVICE 7
|
|||
|
|
|||
|
|
|||
|
EXTERN_C HRESULT WINAPI BdnLookupServiceA (LPCSTR, HBDNSERVICE *);
|
|||
|
EXTERN_C HRESULT WINAPI BdnLookupServiceW (LPCWSTR, HBDNSERVICE *);
|
|||
|
|
|||
|
EXTERN_C HRESULT WINAPI BdnServiceCreate (HBDNSERVICE *);
|
|||
|
|
|||
|
EXTERN_C HRESULT WINAPI BdnServiceClose (HBDNSERVICE);
|
|||
|
|
|||
|
EXTERN_C HRESULT WINAPI BdnReserveAddress
|
|||
|
( HBDNSERVICE,
|
|||
|
time_t,
|
|||
|
time_t,
|
|||
|
DWORD,
|
|||
|
DWORD,
|
|||
|
const SOCKET_ADDRESS *
|
|||
|
);
|
|||
|
|
|||
|
EXTERN_C HRESULT WINAPI BdnReleaseAddress
|
|||
|
( HBDNSERVICE,
|
|||
|
time_t,
|
|||
|
const SOCKET_ADDRESS *
|
|||
|
);
|
|||
|
|
|||
|
EXTERN_C HRESULT WINAPI BdnServiceSetValue
|
|||
|
( HBDNSERVICE,
|
|||
|
DWORD,
|
|||
|
const BDN_VALUE *
|
|||
|
);
|
|||
|
|
|||
|
EXTERN_C HRESULT WINAPI BdnServiceGetValue
|
|||
|
( HBDNSERVICE,
|
|||
|
DWORD,
|
|||
|
BDN_VALUE *
|
|||
|
);
|
|||
|
|
|||
|
EXTERN_C HRESULT WINAPI BdnServiceSetValueStringA
|
|||
|
( HBDNSERVICE,
|
|||
|
DWORD,
|
|||
|
LPCSTR
|
|||
|
);
|
|||
|
|
|||
|
EXTERN_C HRESULT WINAPI BdnServiceSetValueStringW
|
|||
|
( HBDNSERVICE,
|
|||
|
DWORD,
|
|||
|
LPCWSTR
|
|||
|
);
|
|||
|
|
|||
|
EXTERN_C HRESULT WINAPI BdnServiceGetValueStringA
|
|||
|
( HBDNSERVICE,
|
|||
|
DWORD,
|
|||
|
LPSTR,
|
|||
|
DWORD
|
|||
|
);
|
|||
|
|
|||
|
EXTERN_C HRESULT WINAPI BdnServiceGetValueStringW
|
|||
|
( HBDNSERVICE,
|
|||
|
DWORD,
|
|||
|
LPWSTR,
|
|||
|
DWORD
|
|||
|
);
|
|||
|
|
|||
|
EXTERN_C HRESULT WINAPI BdnCreateRegulatedMulticast
|
|||
|
( HBDNSERVICE service,
|
|||
|
LPBDN_RSVP reservation,
|
|||
|
HBDNCONN * conn
|
|||
|
);
|
|||
|
|
|||
|
EXTERN_C HRESULT WINAPI BdnCreateRegulatedMulticastRaw
|
|||
|
( SOCKET sock,
|
|||
|
LPBDN_RSVP reservation,
|
|||
|
HBDNCONN * conn
|
|||
|
);
|
|||
|
|
|||
|
EXTERN_C HRESULT WINAPI BdnOpenTunnel
|
|||
|
( HBDNSERVICE service,
|
|||
|
const SOCKET_ADDRESS * destination_address,
|
|||
|
BYTE mttl,
|
|||
|
DWORD reservation_id,
|
|||
|
HBDNCONN * conn
|
|||
|
);
|
|||
|
|
|||
|
EXTERN_C HRESULT WINAPI BdnReserveBandwidthA
|
|||
|
( HBDNSERVICE service,
|
|||
|
time_t start_time,
|
|||
|
time_t end_time,
|
|||
|
DWORD slot,
|
|||
|
const FLOWSPEC * flowspec,
|
|||
|
LPCSTR description,
|
|||
|
DWORD * resv_id
|
|||
|
);
|
|||
|
|
|||
|
EXTERN_C HRESULT WINAPI BdnReserveBandwidthW
|
|||
|
( HBDNSERVICE service,
|
|||
|
time_t start_time,
|
|||
|
time_t end_time,
|
|||
|
DWORD slot,
|
|||
|
const FLOWSPEC * flowspec,
|
|||
|
LPCWSTR description,
|
|||
|
DWORD * resv_id
|
|||
|
);
|
|||
|
|
|||
|
EXTERN_C HRESULT WINAPI BdnGetReservationA
|
|||
|
( HBDNSERVICE service,
|
|||
|
DWORD resv_id,
|
|||
|
BDN_RSVP * resv,
|
|||
|
LPSTR description,
|
|||
|
DWORD description_len
|
|||
|
);
|
|||
|
|
|||
|
EXTERN_C HRESULT WINAPI BdnGetReservationW
|
|||
|
( HBDNSERVICE service,
|
|||
|
DWORD resv_id,
|
|||
|
BDN_RSVP * resv,
|
|||
|
LPWSTR description,
|
|||
|
DWORD description_len
|
|||
|
);
|
|||
|
|
|||
|
EXTERN_C HRESULT WINAPI BdnLookupReservationA
|
|||
|
( HBDNSERVICE hBdnService,
|
|||
|
LPCSTR szDescription,
|
|||
|
time_t StartTime,
|
|||
|
time_t EndTime,
|
|||
|
BDN_RSVP * lpReservation,
|
|||
|
DWORD * lpReservationCount // in-out parameter
|
|||
|
);
|
|||
|
|
|||
|
EXTERN_C HRESULT WINAPI BdnLookupReservationW
|
|||
|
( HBDNSERVICE hBdnService,
|
|||
|
LPCWSTR szDescription,
|
|||
|
time_t StartTime,
|
|||
|
time_t EndTime,
|
|||
|
BDN_RSVP * lpReservation,
|
|||
|
DWORD * lpReservationCount // in-out parameter
|
|||
|
);
|
|||
|
|
|||
|
EXTERN_C HRESULT WINAPI BdnClearReservation
|
|||
|
( HBDNSERVICE hBdnService,
|
|||
|
DWORD dwReservationID
|
|||
|
);
|
|||
|
|
|||
|
EXTERN_C INT WINAPI BdnSend
|
|||
|
( HBDNCONN,
|
|||
|
const void *,
|
|||
|
WORD);
|
|||
|
|
|||
|
EXTERN_C INT WINAPI BdnSendTo (
|
|||
|
HBDNCONN hBdnConn,
|
|||
|
const SOCKET_ADDRESS * lpDestAddress,
|
|||
|
WORD wDestPort,
|
|||
|
const BDN_HARDWARE_ADDR * lpHardwareAddress,
|
|||
|
const void * lpBuffer,
|
|||
|
WORD nBufferLength
|
|||
|
);
|
|||
|
|
|||
|
EXTERN_C INT WINAPI BdnSendRaw (
|
|||
|
HBDNCONN hBdnConn,
|
|||
|
WORD wProtocol,
|
|||
|
const BDN_HARDWARE_ADDR * lpHardwareAddress,
|
|||
|
const void * lpBuffer,
|
|||
|
WORD nBufferLength
|
|||
|
);
|
|||
|
|
|||
|
|
|||
|
#ifdef _UNICODE
|
|||
|
#define BdnGetReservation BdnGetReservationW
|
|||
|
#define BdnLookupReservation BdnLookupReservationW
|
|||
|
#define BdnLookupService BdnLookupServiceW
|
|||
|
#define BdnServiceSetValueString BdnServiceSetValueStringW
|
|||
|
#else
|
|||
|
#define BdnGetReservation BdnGetReservationA
|
|||
|
#define BdnLookupReservation BdnLookupReservationA
|
|||
|
#define BdnLookupService BdnLookupServiceA
|
|||
|
#define BdnServiceSetValueString BdnServiceSetValueStringA
|
|||
|
#endif
|
|||
|
|
|||
|
|
|||
|
// #define MSBDNEDENIED -1; // ???
|
|||
|
// #define MSBDNEINVALID -2; // ???
|
|||
|
|
|||
|
|
|||
|
EXTERN_C MSBDNAPI INT WINAPI msbdnReserveAddress(
|
|||
|
LPCSADDR_INFO lpcsServerAddr,
|
|||
|
time_t StartTime,
|
|||
|
time_t EndTime,
|
|||
|
WORD wFLags,
|
|||
|
LPSOCKET_ADDRESS lpDestAddr
|
|||
|
);
|
|||
|
|
|||
|
#define MSBDN_INET_EXISTING 0x0100 // The lpDestAddr is already filled with an existing value that the server should use for the reservation.
|
|||
|
#define MSBDN_INET_GLOBAL 0x0001 // Reserve an internet-wide globally unique IP address for the duration is the reservation. TTL >= 127.
|
|||
|
#define MSBDN_INET_NETWORK 0x0002 // Reserve a IP address that is unique to the organization<6F>s network. For DSS, this is equivalent to their entire Satellite.
|
|||
|
#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.
|
|||
|
|
|||
|
|
|||
|
EXTERN_C MSBDNAPI INT WINAPI msbdnRelinquishAddress(
|
|||
|
LPCSADDR_INFO lpcsServerAddr,
|
|||
|
time_t FromTime,
|
|||
|
LPSOCKET_ADDRESS lpDestAddr
|
|||
|
);
|
|||
|
|
|||
|
|
|||
|
EXTERN_C MSBDNAPI INT WINAPI msbdnReserveBandwidth(
|
|||
|
LPCSADDR_INFO lpcsServerAddr,
|
|||
|
time_t StartTime,
|
|||
|
time_t EndTime,
|
|||
|
LPFLOWSPEC lpFlowSpec,
|
|||
|
LPCTSTR lpszDescription,
|
|||
|
DWORD *lpReservationID
|
|||
|
);
|
|||
|
|
|||
|
|
|||
|
EXTERN_C MSBDNAPI INT WINAPI msbdnGetReservation(
|
|||
|
LPCSADDR_INFO lpcsServerAddr,
|
|||
|
DWORD dwReservationID,
|
|||
|
LPMSBDNRSVP lpReservation,
|
|||
|
LPSTR lpszDescription,
|
|||
|
DWORD dwDescriptionLength
|
|||
|
);
|
|||
|
|
|||
|
|
|||
|
EXTERN_C MSBDNAPI INT WINAPI msbdnLookupReservation(
|
|||
|
LPCSADDR_INFO lpcsServerAddr,
|
|||
|
LPCSTR szDescription,
|
|||
|
time_t StartTime,
|
|||
|
time_t EndTime,
|
|||
|
LPMSBDNRSVP lpReservation,
|
|||
|
DWORD *lpdwReservationCount
|
|||
|
);
|
|||
|
|
|||
|
|
|||
|
EXTERN_C MSBDNAPI INT WINAPI msbdnClearReservation(
|
|||
|
LPCSADDR_INFO lpcsServerAddr,
|
|||
|
DWORD dwReservationID
|
|||
|
);
|
|||
|
|
|||
|
EXTERN_C MSBDNAPI INT WINAPI msbdnForwardMulticast(
|
|||
|
LPCSADDR_INFO lpcsBridgeAddr,
|
|||
|
LPSOCKET_ADDRESS lpDestAddr,
|
|||
|
WORD wTTL,
|
|||
|
DWORD dwReservationID
|
|||
|
);
|
|||
|
|
|||
|
EXTERN_C MSBDNAPI INT WINAPI msbdnStopMulticast(
|
|||
|
LPCSADDR_INFO lpcsBridgeAddr,
|
|||
|
LPSOCKET_ADDRESS lpDestAddr
|
|||
|
);
|
|||
|
|
|||
|
EXTERN_C MSBDNAPI HBDNCONN msbdnCreateRegulatedMulticast (
|
|||
|
SOCKET hSocket,
|
|||
|
LPMSBDNRSVP lpReservation
|
|||
|
);
|
|||
|
|
|||
|
EXTERN_C MSBDNAPI HBDNCONN msbdnOpenTunnel (
|
|||
|
LPCSADDR_INFO lpcsBridgeAddr,
|
|||
|
LPSOCKET_ADDRESS lpDestAddr,
|
|||
|
WORD wTTL,
|
|||
|
DWORD dwReservationID
|
|||
|
);
|
|||
|
|
|||
|
EXTERN_C MSBDNAPI INT WINAPI msbdnSend (
|
|||
|
HBDNCONN hBdnConn,
|
|||
|
LPVOID lpBuffer,
|
|||
|
WORD nBytes
|
|||
|
);
|
|||
|
|
|||
|
EXTERN_C MSBDNAPI INT WINAPI msbdnSendTo (
|
|||
|
HBDNCONN hBdnCon,
|
|||
|
LPSOCKET_ADDRESS lpDestAddress,
|
|||
|
WORD wDestPort,
|
|||
|
LPVOID lpHardwareAddress,
|
|||
|
LPVOID lpBuffer,
|
|||
|
WORD nBytes
|
|||
|
);
|
|||
|
|
|||
|
EXTERN_C MSBDNAPI INT WINAPI msbdnSendRaw (
|
|||
|
HBDNCONN hBdnCon,
|
|||
|
WORD wProtocol,
|
|||
|
LPVOID lpHardwareAddress,
|
|||
|
LPVOID lpBuffer,
|
|||
|
WORD nBytes
|
|||
|
);
|
|||
|
|
|||
|
|
|||
|
EXTERN_C MSBDNAPI INT WINAPI msbdnClose (
|
|||
|
HBDNCONN hBdnCon
|
|||
|
);
|
|||
|
|
|||
|
|
|||
|
EXTERN_C MSBDNAPI INT WINAPI msbdnReserveAddressEx(
|
|||
|
LPCSTR szServer,
|
|||
|
time_t StartTime,
|
|||
|
time_t EndTime,
|
|||
|
WORD wFLags,
|
|||
|
LPCSTR szDestAddr,
|
|||
|
DWORD dwDestAddrLength
|
|||
|
);
|
|||
|
|
|||
|
EXTERN_C MSBDNAPI INT WINAPI msbdnRelinquishAddressEx(
|
|||
|
LPCSTR szServer,
|
|||
|
time_t FromTime,
|
|||
|
LPCSTR szDestAddr
|
|||
|
);
|
|||
|
|
|||
|
EXTERN_C MSBDNAPI INT WINAPI msbdnReserveBandwidthEx(
|
|||
|
LPCSTR szServer,
|
|||
|
time_t StartTime,
|
|||
|
time_t EndTime,
|
|||
|
LPFLOWSPEC lpFlowSpec,
|
|||
|
LPCTSTR lpszDescription,
|
|||
|
DWORD *lpReservationID
|
|||
|
);
|
|||
|
|
|||
|
|
|||
|
EXTERN_C MSBDNAPI INT WINAPI msbdnGetReservationEx(
|
|||
|
LPCSTR szServer,
|
|||
|
DWORD dwReservationID,
|
|||
|
LPMSBDNRSVP lpReservation,
|
|||
|
LPSTR lpszDescription,
|
|||
|
DWORD dwDescriptionLength
|
|||
|
);
|
|||
|
|
|||
|
|
|||
|
EXTERN_C MSBDNAPI INT WINAPI msbdnLookupReservationEx(
|
|||
|
LPCSTR szServer,
|
|||
|
LPCSTR szDescription,
|
|||
|
time_t StartTime,
|
|||
|
time_t EndTime,
|
|||
|
LPMSBDNRSVP lpReservation,
|
|||
|
DWORD *lpdwReservationCount
|
|||
|
);
|
|||
|
|
|||
|
EXTERN_C MSBDNAPI INT WINAPI msbdnClearReservationEx(
|
|||
|
LPCSTR szServer,
|
|||
|
DWORD dwReservationID
|
|||
|
);
|
|||
|
|
|||
|
EXTERN_C MSBDNAPI INT WINAPI msbdnForwardMulticastEx(
|
|||
|
LPCSTR szBridge,
|
|||
|
LPCSTR szDestAddr,
|
|||
|
DWORD dwReservationID
|
|||
|
);
|
|||
|
|
|||
|
EXTERN_C MSBDNAPI INT WINAPI msbdnStopMulticastEx(
|
|||
|
LPCSTR szBridge,
|
|||
|
LPCSTR szDestAddr
|
|||
|
);
|
|||
|
|
|||
|
EXTERN_C MSBDNAPI HBDNCONN WINAPI msbdnOpenTunnelEx(
|
|||
|
LPCSTR szBridge,
|
|||
|
LPCSTR szDestAddr,
|
|||
|
WORD wDestPort,
|
|||
|
WORD wTTL,
|
|||
|
DWORD dwReservationID
|
|||
|
);
|
|||
|
|
|||
|
|
|||
|
#pragma option pop /*P_O_Pop*/
|
|||
|
#endif // __include_bdnapi_h
|