From fc3c05e63f4fedb1532e86d9421490fda6435c79 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 27 Sep 2004 16:37:41 +0000 Subject: r2696: DCOM updates: - Start working on OXIDResolver interface - Add torture test for SimplePing() (This used to be commit b54d14a01a71082251ff926ab57974c6eb3c0a41) --- source4/librpc/idl/dcom.idl | 79 ------------------------------ source4/librpc/idl/oxidresolver.idl | 95 +++++++++++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+), 79 deletions(-) create mode 100644 source4/librpc/idl/oxidresolver.idl (limited to 'source4/librpc/idl') diff --git a/source4/librpc/idl/dcom.idl b/source4/librpc/idl/dcom.idl index c537a01509..df0bcbc80e 100644 --- a/source4/librpc/idl/dcom.idl +++ b/source4/librpc/idl/dcom.idl @@ -35,9 +35,6 @@ interface ObjectRpcBaseTypes // Object Identifer #define OID HYPER_T - // Ping Set Identifier -#define SETID HYPER_T - // Interface Pointer Identifier #define IPID GUID @@ -379,82 +376,6 @@ interface IRemUnknown2 : IRemUnknown ); } -[ - uuid(99fcfec4-5260-101b-bbcb-00aa0021347a), - helpstring("Object Exporter ID Resolver"), - pointer_default(unique) -] -interface IOXIDResolver -{ - // Method to get the protocol sequences, string bindings - // and machine id for an object server given its OXID. - - typedef [public] struct { - DUALSTRINGARRAY *ppdsaOxidBindings; - } ppdsaOxidBindingsArray; - - [idempotent] WERROR ResolveOxid ( - [in] OXID *pOxid, - [in] uint16 cRequestedProtseqs, - [in, size_is(cRequestedProtseqs)] uint16 arRequestedProtseqs[], - [out, ref] ppdsaOxidBindingsArray *ppdsaOxidBindings, - [out, ref] IPID *pipidRemUnknown, - [out, ref] uint32 *pAuthnHint - ); - - // Simple ping is used to ping a Set. Client machines use this - // to inform the object exporter that it is still using the - // members of the set. - // Returns S_TRUE if the SetId is known by the object exporter, - // S_FALSE if not. - [idempotent] WERROR SimplePing ( - [in] SETID *pSetId // Must not be zero - ); - - // Complex ping is used to create sets of OIDs to ping. The - // whole set can subsequently be pinged using SimplePing, - // thus reducing network traffic. - [idempotent] WERROR ComplexPing ( - [in, out] SETID *pSetId, // In of 0 on first call for new set. - [in] uint16 SequenceNum, - [in] uint16 cAddToSet, - [in] uint16 cDelFromSet, - // add these OIDs to the set - [in, unique, size_is(cAddToSet)] OID AddToSet[], - //remove these OIDs from the set - [in, unique, size_is(cDelFromSet)] OID DelFromSet[], - [out] uint16 *pPingBackoffFactor// 2^factor = multipler - ); - // In some cases the client maybe unsure that a particular - // binding will reach the server. (For example, when the oxid - // bindings have more then one TCP/IP binding) This call - // can be used to validate the binding - // from the client. - [idempotent] WERROR ServerAlive (); - - // Method to get the protocol sequences, string bindings, - // RemoteUnknown IPID and COM version for an object server - // given its OXID. Supported by DCOM - // version 5.2 and above. - [idempotent] WERROR ResolveOxid2 ( - [in] OXID *pOxid, - [in] uint16 cRequestedProtseqs, - [in, size_is(cRequestedProtseqs)] - uint16 arRequestedProtseqs[], - [out, ref] ppdsaOxidBindingsArray *ppdsaOxidBindings, - [out, ref] IPID *pipidRemUnknown, - [out, ref] uint32 *pAuthnHint, - [out, ref] COMVERSION *pComVersion - ); - - [idempotent] WERROR ServerAlive2 ( - [out] COMVERSION version, - [out] uint8 unknown1[4], - [out] DUALSTRINGARRAY dualstring, - [out] uint8 unknown2[5]); - -} - [ uuid(4d9f4ab8-7d1c-11cf-861e-0020af6e7c57), version(0.0), diff --git a/source4/librpc/idl/oxidresolver.idl b/source4/librpc/idl/oxidresolver.idl new file mode 100644 index 0000000000..57c5cd439f --- /dev/null +++ b/source4/librpc/idl/oxidresolver.idl @@ -0,0 +1,95 @@ +#include "idl_types.h" + +/** + DCOM interfaces + http://www.grimes.demon.co.uk/DCOM/DCOMSpec.htm + */ + +/* + The OXID Resolver can turn a OXID (Object Exporter ID) into a + RPC binding string that can be used to contact an object + + (used by DCOM) + */ + +[ + uuid(99fcfec4-5260-101b-bbcb-00aa0021347a), + helpstring("Object Exporter ID Resolver"), + endpoints(epmapper, TCP-135), + pointer_default(unique) +] +interface IOXIDResolver +{ +#define OXID HYPER_T +#define SETID HYPER_T +#define IPID GUID +#define OID GUID + + // Method to get the protocol sequences, string bindings + // and machine id for an object server given its OXID. + + typedef [public] struct { + DUALSTRINGARRAY *ppdsaOxidBindings; + } ppdsaOxidBindingsArray; + + [idempotent] WERROR ResolveOxid ( + [in] OXID *pOxid, + [in] uint16 cRequestedProtseqs, + [in, size_is(cRequestedProtseqs)] uint16 arRequestedProtseqs[], + [out, ref] ppdsaOxidBindingsArray *ppdsaOxidBindings, + [out, ref] IPID *pipidRemUnknown, + [out, ref] uint32 *pAuthnHint + ); + + // Simple ping is used to ping a Set. Client machines use this + // to inform the object exporter that it is still using the + // members of the set. + // Returns S_TRUE if the SetId is known by the object exporter, + // S_FALSE if not. + [idempotent] WERROR SimplePing ( + [in] SETID *SetId // Must not be zero + ); + + // Complex ping is used to create sets of OIDs to ping. The + // whole set can subsequently be pinged using SimplePing, + // thus reducing network traffic. + [idempotent] WERROR ComplexPing ( + [in, out] SETID *pSetId, // In of 0 on first call for new set. + [in] uint16 SequenceNum, + [in] uint16 cAddToSet, + [in] uint16 cDelFromSet, + // add these OIDs to the set + [in, size_is(cAddToSet)] OID AddToSet[], + //remove these OIDs from the set + [in, size_is(cDelFromSet)] OID DelFromSet[], + [out] uint16 *pPingBackoffFactor// 2^factor = multipler + ); + + // In some cases the client maybe unsure that a particular + // binding will reach the server. (For example, when the oxid + // bindings have more then one TCP/IP binding) This call + // can be used to validate the binding + // from the client. + [idempotent] WERROR ServerAlive (); + + // Method to get the protocol sequences, string bindings, + // RemoteUnknown IPID and COM version for an object server + // given its OXID. Supported by DCOM + // version 5.2 and above. + [idempotent] WERROR ResolveOxid2 ( + [in] OXID *pOxid, + [in] uint16 cRequestedProtseqs, + [in, size_is(cRequestedProtseqs)] + uint16 arRequestedProtseqs[], + [out, ref] ppdsaOxidBindingsArray *ppdsaOxidBindings, + [out, ref] IPID *pipidRemUnknown, + [out, ref] uint32 *pAuthnHint, + [out, ref] COMVERSION *pComVersion + ); + + [idempotent] WERROR ServerAlive2 ( + [out] COMVERSION version, + [out] uint8 unknown1[4], + [out] DUALSTRINGARRAY dualstring, + [out] uint8 unknown2[5]); +} -- cgit