mdssvc: IDL file for new RPC service
authorRalph Boehme <rb@sernet.de>
Wed, 23 Jul 2014 07:58:45 +0000 (09:58 +0200)
committerRalph Böhme <slow@samba.org>
Tue, 7 Jul 2015 15:34:28 +0000 (17:34 +0200)
'mdssvc' aka 'Metadata Search Service' is an RPC service used by Apple
for passing marshalled Spotlight search queries and results between
client to server.

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
librpc/idl/mdssvc.idl [new file with mode: 0644]
librpc/idl/wscript_build
librpc/wscript_build

diff --git a/librpc/idl/mdssvc.idl b/librpc/idl/mdssvc.idl
new file mode 100644 (file)
index 0000000..bfb27c4
--- /dev/null
@@ -0,0 +1,68 @@
+import "misc.idl";
+[
+       uuid("885d85fb-c754-4062-a0e7-6872ce0064f4"),
+       endpoint("ncacn_np:[\\pipe\\mdssvc]", "ncalrpc:"),
+       version(2.0),
+       helpstring("Spotlight metadata search service")
+]
+interface mdssvc
+{
+       void mdssvc_open(
+               [in,out,ref]                             uint32         *device_id,
+               [in,out,ref]                             uint32         *unkn2, /* always 0x17 ? */
+               [in,out,ref]                             uint32         *unkn3, /* always 0 ? */
+               [in][string,charset(UTF8),size_is(1025)] uint8           share_mount_path[],
+               [in][string,charset(UTF8),size_is(1025)] uint8           share_name[],
+               [out,string,charset(UTF8),size_is(1025)] uint8           share_path[],
+               [out,ref]                                policy_handle  *handle
+       );
+
+       void mdssvc_unknown1(
+               [in]        policy_handle   handle,
+               [in]        uint32          unkn1, /* always 0, some status ? */
+               [in]        uint32          device_id,
+               [in]        uint32          unkn3, /* = mdssvc_open.unkn2 ? */
+               [in]        uint32          unkn4, /* always 0, some status ? */
+               [in]        uint32          uid,
+               [in]        uint32          gid,
+               [out,ref]   uint32         *status,
+               [out,ref]   uint32         *flags, /* always 0x6b000001 ? */
+               [out,ref]   uint32         *unkn7  /* always 0 ? */
+       );
+
+       typedef [public] struct {
+               uint32 length;
+               uint32 size;
+               [size_is(size),length_is(length)] uint8 *spotlight_blob;
+       } mdssvc_blob;
+
+       void mdssvc_cmd(
+               [in]        policy_handle   handle,
+               [in]        uint32          unkn1, /* always 0, status ? */
+               [in]        uint32          device_id,
+               [in]        uint32          unkn3, /* = mdssvc_open.unkn2 ? */
+               [in]        uint32          unkn4, /* always 0 ? */
+               [in]        uint32          flags, /* always 0x6b000001 ? */
+               [in]        mdssvc_blob     request_blob,
+               [in]        uint32          unkn5, /* always 0 ? */
+               [in]        uint32          max_fragment_size1,
+               [in]        uint32          unkn6, /* always 1 ? */
+               /* always max_fragment_size1 = max_fragment_size2 ? */
+               [in]        uint32          max_fragment_size2,
+               [in]        uint32          unkn7, /* always 0 ? */
+               [in]        uint32          unkn8, /* always 0 ? */
+               [out,ref]   uint32         *status,
+               [out,ref]   mdssvc_blob    *response_blob,
+               [out,ref]   uint32         *unkn9  /* always 0 ? */
+       );
+
+       void mdssvc_close(
+               [in]        policy_handle   in_handle,
+               [in]        uint32          unkn1, /* always 0, some status ? */
+               [in]        uint32          device_id,
+               [in]        uint32          unkn2, /* = mdssvc_open.unkn2 ? */
+               [in]        uint32          unkn3, /* always 0, some status ? */
+               [out,ref]   policy_handle  *out_handle,
+               [out,ref]   uint32         *status
+       );
+}
index 4b56af63dec92acf8488c2afef826cf706f22e89..6316edd466567c0b57fd8b1efea358a420c9bcc2 100644 (file)
@@ -13,7 +13,8 @@ bld.SAMBA_PIDL_LIST('PIDL',
                        notify.idl
                        smb2_lease_struct.idl
                        policyagent.idl scerpc.idl svcctl.idl wkssvc.idl eventlog6.idl backupkey.idl
-                       fsrvp.idl bkupblobs.idl fscc.idl frsblobs.idl witness.idl clusapi.idl''',
+                       fsrvp.idl bkupblobs.idl fscc.idl frsblobs.idl witness.idl clusapi.idl
+                       mdssvc.idl''',
                     options='--header --ndr-parser --samba3-ndr-server --server --client --python',
                     output_dir='../gen_ndr')
 
index 212733aa284196bd38cd7804da6d4e0f269a5635..1594e721eac98a7ca7e765a0fb6ddc64a54da509 100644 (file)
@@ -330,6 +330,11 @@ bld.SAMBA_SUBSYSTEM('NDR_CLUSAPI',
     public_deps='ndr'
     )
 
+bld.SAMBA_SUBSYSTEM('NDR_MDSSVC',
+    source='gen_ndr/ndr_mdssvc.c',
+    public_deps='ndr'
+    )
+
 bld.SAMBA_SUBSYSTEM('NDR_DCERPC',
     source='gen_ndr/ndr_dcerpc.c ndr/ndr_dcerpc.c',
     public_deps='ndr',
@@ -665,12 +670,17 @@ bld.SAMBA_SUBSYSTEM('RPC_NDR_CLUSAPI',
     public_deps='dcerpc-binding NDR_CLUSAPI'
     )
 
+bld.SAMBA_SUBSYSTEM('RPC_NDR_MDSSVC',
+    source='gen_ndr/ndr_mdssvc_c.c',
+    public_deps='dcerpc-binding NDR_MDSSVC'
+    )
+
 # 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_FSRVP NDR_WITNESS NDR_OPEN_FILES NDR_SMBXSRV''',
+    NDR_NTPRINTING NDR_FSRVP NDR_WITNESS NDR_MDSSVC NDR_OPEN_FILES NDR_SMBXSRV''',
     private_library=True,
     grouping_library=True
     )