idl: add File Server Remote VSS Protocol idl
authorDavid Disseldorp <ddiss@samba.org>
Tue, 21 Feb 2012 13:04:42 +0000 (14:04 +0100)
committerDavid Disseldorp <ddiss@samba.org>
Fri, 8 Jun 2012 11:34:31 +0000 (13:34 +0200)
MS-FSRVP preview documents used as reference.
H_ERROR codes should be moved to a more generic file.

librpc/idl/fsrvp.idl [new file with mode: 0644]
librpc/idl/wscript_build
librpc/wscript_build

diff --git a/librpc/idl/fsrvp.idl b/librpc/idl/fsrvp.idl
new file mode 100644 (file)
index 0000000..d61545b
--- /dev/null
@@ -0,0 +1,113 @@
+#include "idl_types.h"
+
+/*
+ * File Server Remote VSS Protocol Definitions
+ */
+
+import "misc.idl";
+
+[ uuid("a8e0653c-2744-4389-a61d-7373df8b2292"),
+  version(1.0),
+  endpoint("ncacn_np:[\\pipe\\FssagentRpc]"),
+  helpstring("File Server Remote VSS Protocol"),
+  pointer_default(unique)
+] interface FileServerVssAgent
+{
+       const uint32 FSRVP_E_BAD_STATE = 0x80042301;
+       const uint32 FSRVP_E_SHADOW_COPY_SET_IN_PROGRESS = 0x80042316;
+       const uint32 FSRVP_E_NOT_SUPPORTED = 0x8004230C;
+       const uint32 FSRVP_E_WAIT_TIMEOUT = 0x00000102;
+       const uint32 FSRVP_E_WAIT_FAILED = 0xFFFFFFFF;
+       const uint32 FSRVP_E_OBJECT_ALREADY_EXISTS = 0x8004230D;
+       const uint32 FSRVP_E_OBJECT_NOT_FOUND = 0x80042308;
+       const uint32 FSRVP_E_BAD_ID = 0x80042302;       /* wire, not documented */
+
+       /* TODO move these to generic herror defines or COM in orpc.idl */
+       const uint32 E_ACCESSDENIED = 0x80070005;
+       const uint32 E_INVALIDARG = 0x80070057;
+       const uint32 E_OUTOFMEMORY = 0x80000002;
+
+       typedef struct {
+               GUID ShadowCopySetId;
+               GUID ShadowCopyId;
+               [string,charset(UTF16)] uint16 *ShareNameUNC;
+               [string,charset(UTF16)] uint16 *ShadowCopyShareName;
+               NTTIME tstamp;
+       } fssagent_share_mapping_1;
+
+       typedef union {
+               [case(1)] fssagent_share_mapping_1 *ShareMapping1;
+               [default];
+       } fssagent_share_mapping;
+
+       const uint32 FSRVP_RPC_VERSION_1 = 0x000000001;
+       DWORD fss_GetSupportedVersion(
+               [in] uint8 magic[52],           /* wire */
+               [out] uint32 *MinVersion,
+               [out] uint32 *MaxVersion);
+
+       const uint32 ATTR_PERSISTENT = 0x00000001;
+       const uint32 ATTR_NO_AUTO_RECOVERY = 0x00000002;
+       const uint32 ATTR_NO_AUTO_RELEASE = 0x00000008;
+       const uint32 ATTR_NO_WRITERS = 0x00000010;
+       const uint32 ATTR_FILE_SHARE = 0x04000000;
+       const uint32 ATTR_AUTO_RECOVERY = 0x00400000;
+
+       const uint32 FSRVP_CTX_BACKUP = 0x00000000;
+       const uint32 FSRVP_CTX_FILE_SHARE_BACKUP = 0x00000010;
+       const uint32 FSRVP_CTX_NAS_ROLLBACK = 0x00000019;
+       const uint32 FSRVP_CTX_APP_ROLLBACK = 0x00000009;
+       DWORD fss_SetContext(
+               [in] uint32 Context);
+
+       DWORD fss_StartShadowCopySet(
+               [in] GUID ClientShadowCopySetId,
+               [out] GUID *pShadowCopySetId);
+
+       DWORD fss_AddToShadowCopySet(
+               [in] GUID ClientShadowCopyId,
+               [in] GUID ShadowCopySetId,
+               [in] [string,charset(UTF16)] uint16 *ShareName,
+               [out] GUID *pShadowCopyId);
+
+       DWORD fss_CommitShadowCopySet(
+               [in] GUID ShadowCopySetId,
+               [in] uint32 TimeOutInMilliseconds);
+
+       DWORD fss_ExposeShadowCopySet(
+               [in] GUID ShadowCopySetId,
+               [in] uint32 TimeOutInMilliseconds);
+
+       DWORD fss_RecoveryCompleteShadowCopySet(
+               [in] GUID ShadowCopySetId);
+
+       DWORD fss_AbortShadowCopySet(
+               [in] GUID ShadowCopySetId);
+
+       DWORD fss_IsPathSupported(
+               [in] [string,charset(UTF16)] uint16 *ShareName,
+               [in] uint8 magic[52],                           /* wire */
+               [out] boolean32 *SupportedByThisProvider,
+               [out] [string,charset(UTF16)] uint16 **OwnerMachineName);
+
+       DWORD fss_IsPathShadowCopied(
+               [in] [string,charset(UTF16)] uint16 *ShareName,
+               [out] boolean32 *ShadowCopyPresent,
+               [out] int32 *ShadowCopyCompatibility);
+
+       DWORD fss_GetShareMapping(
+               [in] GUID ShadowCopyId,
+               [in] GUID ShadowCopySetId,
+               [in] [string,charset(UTF16)] uint16 *ShareName,
+               [in] uint32 Level,
+               [out,switch_is(Level)] fssagent_share_mapping *ShareMapping);
+
+       DWORD fss_DeleteShareMapping(
+               [in] GUID ShadowCopySetId,
+               [in] GUID ShadowCopyId,
+               [in] [string,charset(UTF16)] uint16 *ShareName);
+
+       DWORD fss_PrepareShadowCopySet(
+               [in] GUID ShadowCopySetId,
+               [in] uint32 TimeOutInMilliseconds);
+}
index c90edf1002b136e53bcc158bff321a47bc9873ff..58d3181cb58eee04a5f16ac84036c5821ac73cc7 100644 (file)
@@ -12,7 +12,7 @@ bld.SAMBA_PIDL_LIST('PIDL',
                        drsblobs.idl efs.idl frstrans.idl mgmt.idl netlogon.idl
                        notify.idl
                        policyagent.idl scerpc.idl svcctl.idl wkssvc.idl eventlog6.idl backupkey.idl
-                       printcap.idl''',
+                       fsrvp.idl''',
                     options='--header --ndr-parser --samba3-ndr-server --server --client --python',
                     output_dir='../gen_ndr')
 
@@ -27,7 +27,7 @@ bld.SAMBA_PIDL_LIST('PIDL',
                     output_dir='../gen_ndr')
 
 bld.SAMBA_PIDL_LIST('PIDL',
-                    'rap.idl ntprinting.idl preg.idl ioctl.idl',
+                    'rap.idl ntprinting.idl preg.idl ioctl.idl printcap.idl',
                     options='--header --ndr-parser',
                     output_dir='../gen_ndr')
 
index a94ff8dac4ff1b418b6911ed9d886485017fe982..46570ae76b347a9067238c83686f30dafa8a4917 100644 (file)
@@ -285,6 +285,11 @@ bld.SAMBA_SUBSYSTEM('NDR_COMPRESSION',
     deps='z LZXPRESS'
     )
 
+bld.SAMBA_SUBSYSTEM('NDR_FSRVP',
+       source='gen_ndr/ndr_fsrvp.c',
+       public_deps='ndr'
+       )
+
 bld.SAMBA_SUBSYSTEM('NDR_DCERPC',
     source='gen_ndr/ndr_dcerpc.c',
     public_deps='ndr',
@@ -579,12 +584,17 @@ bld.SAMBA_SUBSYSTEM('NDR_IOCTL',
     public_deps='ndr'
     )
 
+bld.SAMBA_SUBSYSTEM('RPC_NDR_FSRVP',
+       source='gen_ndr/ndr_fsrvp_c.c',
+       public_deps='dcerpc-binding NDR_FSRVP'
+       )
+
 # a grouping library for NDR subsystems that may be used by more than one target
 bld.SAMBA_LIBRARY('ndr-samba',
     source=[],
     deps='''NDR_DRSBLOBS NDR_DRSUAPI NDR_IDMAP NDR_NTLMSSP NDR_SCHANNEL NDR_MGMT
     NDR_DNSP NDR_EPMAPPER NDR_XATTR NDR_UNIXINFO NDR_NAMED_PIPE_AUTH NDR_DCOM
-    NDR_NTPRINTING''',
+    NDR_NTPRINTING NDR_FSRVP''',
     private_library=True,
     grouping_library=True
     )