home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / include / bradm.idl < prev    next >
Text File  |  1998-04-25  |  5KB  |  208 lines

  1. // Currently, the interface constrains the total number of output subsystems
  2. // to a limit of 32.
  3.  
  4. import "wtypes.idl";
  5.  
  6. [
  7. version(0.1),
  8. uuid(A4916A26-1051-11d1-BFC4-00C04FBBDEC1),
  9. pointer_default(unique)
  10. ]
  11.  
  12. interface BridgeAdmin
  13. {
  14.     typedef enum BRIDGE_OUTPUT_STATE {
  15.         BRIDGE_OUTPUT_STATE_UNLOADED,
  16.         BRIDGE_OUTPUT_STATE_RUNNING
  17.     } BRIDGE_OUTPUT_STATE;
  18.  
  19.     typedef enum BRIDGE_BANDWIDTH_POLICY {
  20.         BRIDGE_BANDWIDTH_POLICY_GUARANTEED,
  21.         BRIDGE_BANDWIDTH_POLICY_OPPORTUNISTIC,
  22.         BRIDGE_BANDWIDTH_POLICY_REGULATED
  23.     } BRIDGE_BANDWIDTH_POLICY;
  24.  
  25.     typedef DWORD BRIDGE_IP4ADDR;
  26.  
  27.     // global configuration parameters
  28.     typedef struct BRIDGE_CONFIG {
  29.         DWORD    WorkerThreads;
  30.     } BRIDGE_CONFIG;
  31.  
  32.     typedef struct BRIDGE_STATISTICS {
  33.         DWORD    PacketsReceived;
  34.         DWORD    PacketsReceivedMulticast;
  35.         DWORD    PacketsReceivedTunnel;
  36.         DWORD    PacketsForwarded;
  37.     } BRIDGE_STATISTICS;
  38.  
  39.     typedef struct BRIDGE_OUTPUT_STATISTICS {
  40.         DWORD        PacketsForwarded;
  41.         DWORDLONG    BytesForwarded;
  42.         DWORD        PacketOverflows;
  43.         DWORD        InterfaceFailures;
  44.         DWORD        LastBitsPerSecond;
  45.     } BRIDGE_OUTPUT_STATISTICS;
  46.  
  47.     typedef struct BRIDGE_OUTPUT_CONFIG {
  48.         LPWSTR                    DisplayName;
  49.         LPWSTR                    DllFilename;
  50.         DWORD                    MaxBandwidth;                    // in bits/sec
  51.         DWORD                    MinOpportunisticBandwidth;        // in bits/sec
  52.     } BRIDGE_OUTPUT_CONFIG;
  53.  
  54.     typedef enum BRIDGE_OUTPUT_VALUE_TYPE {
  55.         BRIDGE_OUTPUT_VALUE_STRING,
  56.         BRIDGE_OUTPUT_VALUE_DWORD,
  57.         BRIDGE_OUTPUT_VALUE_IP4ADDR,
  58.         BRIDGE_OUTPUT_VALUE_BOOLEAN
  59.     } BRIDGE_OUTPUT_VALUE_TYPE;
  60.  
  61.     typedef struct BRIDGE_OUTPUT_VALUE {
  62.         DWORD    Index;
  63.         LPWSTR    Name;
  64.         union BRIDGE_OUTPUT_VALUE_DATA
  65.         switch (BRIDGE_OUTPUT_VALUE_TYPE Type) {
  66.         case    BRIDGE_OUTPUT_VALUE_STRING:
  67. //            LPWSTR    String;
  68.             DWORD    StringIgnore;
  69.         case    BRIDGE_OUTPUT_VALUE_DWORD:
  70.             DWORD    Dword;
  71.         case    BRIDGE_OUTPUT_VALUE_IP4ADDR:
  72.             BRIDGE_IP4ADDR    IPAddress;
  73.         case    BRIDGE_OUTPUT_VALUE_BOOLEAN:
  74.             BOOL            Boolean;
  75.         }    Data;
  76.         LPWSTR    String;
  77.     } BRIDGE_OUTPUT_VALUE;
  78.  
  79.     typedef struct BRIDGE_OUTPUT_INFO {
  80.         DWORD                        OutputID;
  81.         BRIDGE_OUTPUT_STATISTICS    Statistics;
  82.         BRIDGE_OUTPUT_CONFIG        Config;
  83.         BRIDGE_OUTPUT_STATE            State;
  84.         HRESULT                        Status;
  85.     } BRIDGE_OUTPUT_INFO;
  86.  
  87.     typedef struct BRIDGE_ROUTE_RECORD {
  88.         BRIDGE_IP4ADDR        Address;
  89.         BRIDGE_IP4ADDR        Netmask;
  90.         DWORD                OutputMask;
  91.         DWORD                TotalMatches;
  92.         DWORD                ReservationID;
  93.         DWORD                LastBitRate;
  94.     } BRIDGE_ROUTE_RECORD, *PBRIDGE_ROUTE_RECORD;
  95.  
  96.     typedef struct BRIDGE_RESERVATION {
  97.         DWORD                        ReservationID;
  98.         DWORD                        SubsystemID;
  99.         BRIDGE_BANDWIDTH_POLICY        BandwidthPolicy;
  100.         DWORD                        BitsPerSecond;
  101.         LPWSTR                        DisplayName;
  102.     } BRIDGE_RESERVATION;
  103.  
  104.     typedef BRIDGE_ROUTE_RECORD * BRIDGE_ROUTE_RECORD_LIST;
  105.  
  106.     // ------------------------------------------------------------------------------
  107.  
  108.     // test to see if RPC server is listening
  109.     HRESULT    BridgePing    (void);
  110.  
  111.     HRESULT    BridgeGetVersion (
  112.         [out]    DWORD *        version);
  113.  
  114.     HRESULT BridgeGetConfig (
  115.         [out]    BRIDGE_CONFIG *);
  116.  
  117.     HRESULT BridgeSetConfig (
  118.         [in]    BRIDGE_CONFIG *);
  119.  
  120.     // output subsystem functions -----------------------------------------------------
  121.  
  122.     HRESULT    BridgeOutputAdd (
  123.         [out]    DWORD *                    output_id,
  124.         [in]    BRIDGE_OUTPUT_CONFIG *    config);
  125.     HRESULT BridgeOutputDelete (
  126.         [in]    DWORD                    output_id);
  127.  
  128.     HRESULT BridgeOutputModify (
  129.         [in]    DWORD                    output_id,
  130.         [in]    BRIDGE_OUTPUT_CONFIG *    config);
  131.  
  132.     HRESULT    BridgeOutputGetConfig (
  133.         [in]    DWORD                    output_id,
  134.         [out]    BRIDGE_OUTPUT_CONFIG *    config);
  135.  
  136.     HRESULT BridgeOutputGetInfo (
  137.         [in]    DWORD                    output_id,
  138.         [out]    BRIDGE_OUTPUT_INFO *    info);
  139.  
  140.     HRESULT    BridgeOutputSetState (
  141.         [in]    DWORD                output_id,
  142.         [in]    BRIDGE_OUTPUT_STATE    state);
  143.  
  144.     HRESULT    BridgeOutputEnum (
  145.         [out]    DWORD *    length,
  146.         [out, size_is (,*length)]    BRIDGE_OUTPUT_INFO ** array);
  147.  
  148.     HRESULT BridgeOutputGetValue (
  149.         [in]    DWORD    output_id,
  150.         [in]    DWORD    index,
  151.         [out]    BRIDGE_OUTPUT_VALUE *    value);
  152.  
  153.     HRESULT BridgeOutputSetValue (
  154.         [in]    DWORD    output_id,
  155.         [in]    BRIDGE_OUTPUT_VALUE *    value);
  156.  
  157.     HRESULT BridgeOutputEnumValue (
  158.         [in]    DWORD    output_id,
  159.         [out]    DWORD *    length,
  160.         [out, size_is (,*length)]    BRIDGE_OUTPUT_VALUE ** array);
  161.  
  162.     // routing interface -------------------------------------------------------
  163.  
  164.     HRESULT    BridgeRouteAdd (
  165.         [in]    BRIDGE_ROUTE_RECORD *    route);
  166.  
  167.     HRESULT    BridgeRouteDelete (
  168.         [in]    BRIDGE_IP4ADDR        address,
  169.         [in]    BRIDGE_IP4ADDR        mask);
  170.  
  171.     HRESULT    BridgeRouteModify (
  172.         [in]    BRIDGE_IP4ADDR        address,
  173.         [in]    BRIDGE_IP4ADDR        mask,
  174.         [in]    DWORD                subsystem_mask);
  175.  
  176.     HRESULT BridgeRouteEnum (
  177.         [out]    DWORD * length,
  178.         [out, size_is (,*length)]    BRIDGE_ROUTE_RECORD ** array);
  179.  
  180.     HRESULT BridgeRouteLookup (
  181.         [in]    BRIDGE_IP4ADDR        address,
  182.         [in]    BRIDGE_IP4ADDR        netmask,
  183.         [out]    BRIDGE_ROUTE_RECORD *    route);
  184.  
  185.     HRESULT BridgeInterfaceEnum (
  186.         [out]    DWORD *    length,
  187.         [out, size_is (,*length)]    BRIDGE_IP4ADDR ** array);
  188.  
  189.     // reservation functions ----------------------------------------------------
  190.  
  191.     HRESULT    BridgeResvAdd (
  192.         [in]    BRIDGE_RESERVATION *    resv,
  193.         [out]    DWORD *                    resv_id);
  194.  
  195.     HRESULT    BridgeResvDelete (
  196.         [in]    DWORD                    resv_id);
  197.  
  198.     HRESULT    BridgeResvLookup (
  199.         [in]    DWORD                    resv_id,
  200.         [out]    BRIDGE_RESERVATION *    resv);
  201.  
  202.     HRESULT    BridgeResvEnum (
  203.         [out]    DWORD *                    length,
  204.         [out, size_is(,*length)]    BRIDGE_RESERVATION ** array);
  205.  
  206. }
  207.  
  208.