summaryrefslogtreecommitdiff
path: root/librpc/idl/oxidresolver.idl
diff options
context:
space:
mode:
authorbubulle <bubulle@alioth.debian.org>2009-07-06 18:17:09 +0000
committerbubulle <bubulle@alioth.debian.org>2009-07-06 18:17:09 +0000
commit1e4514a1edfdd1dde65a7567a7d7328de40e3493 (patch)
tree889204356442a0e13d8b3b2deaa1e0b310cea940 /librpc/idl/oxidresolver.idl
parent956e238a6ed95a84c85c14ac898ffee166c35287 (diff)
downloadsamba-1e4514a1edfdd1dde65a7567a7d7328de40e3493.tar.gz
merge upstream 3.4.0
git-svn-id: svn://svn.debian.org/svn/pkg-samba/trunk/samba@2936 fc4039ab-9d04-0410-8cac-899223bdd6b0
Diffstat (limited to 'librpc/idl/oxidresolver.idl')
-rw-r--r--librpc/idl/oxidresolver.idl96
1 files changed, 96 insertions, 0 deletions
diff --git a/librpc/idl/oxidresolver.idl b/librpc/idl/oxidresolver.idl
new file mode 100644
index 0000000000..67cb4301c0
--- /dev/null
+++ b/librpc/idl/oxidresolver.idl
@@ -0,0 +1,96 @@
+/**
+ 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)
+ */
+
+import "misc.idl", "orpc.idl";
+
+[
+ uuid("99fcfec4-5260-101b-bbcb-00aa0021347a"),
+ helpstring("Object Exporter ID Resolver"),
+ endpoint("ncacn_np:[\\pipe\\epmapper]", "ncacn_ip_tcp:[135]", "ncalrpc:"),
+ pointer_default(unique)
+]
+interface IOXIDResolver
+{
+#define OXID hyper
+#define SETID hyper
+#define IPID GUID
+#define OID GUID
+
+ /* Method to get the protocol sequences, string bindings */
+ /* and machine id for an object server given its OXID. */
+
+ [idempotent] WERROR ResolveOxid (
+ [in] OXID pOxid,
+ [in] uint16 cRequestedProtseqs,
+ [in, size_is(cRequestedProtseqs)] uint16 arRequestedProtseqs[],
+ [out] DUALSTRINGARRAY **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,ref] SETID *SetId, /* 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,ref] uint16 *PingBackoffFactor/* 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 than 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. Looks like that means
+ * Windows 2003/XP and above */
+ [idempotent] WERROR ResolveOxid2 (
+ [in] OXID pOxid,
+ [in] uint16 cRequestedProtseqs,
+ [in, size_is(cRequestedProtseqs)] uint16 arRequestedProtseqs[],
+ [out] DUALSTRINGARRAY **pdsaOxidBindings,
+ [out,ref] IPID *ipidRemUnknown,
+ [out,ref] uint32 *AuthnHint,
+ [out,ref] COMVERSION *ComVersion
+ );
+ typedef struct {
+ COMVERSION version;
+ uint32 unknown1;
+ } COMINFO;
+
+ [idempotent] WERROR ServerAlive2 (
+ [out,ref] COMINFO *info,
+ [out,ref] DUALSTRINGARRAY *dualstring,
+ [out,ref] uint8 *unknown2,
+ [out,ref] uint8 *unknown3,
+ [out,ref] uint8 *unknown4);
+}