svn commit: samba r18318 - in branches/SAMBA_4_0/source: librpc/idl rpc_server/srvsvc

idra at samba.org idra at samba.org
Sun Sep 10 03:58:01 GMT 2006


Author: idra
Date: 2006-09-10 03:58:00 +0000 (Sun, 10 Sep 2006)
New Revision: 18318

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=18318

Log:

Implement DiskEnum
Fix spelling and consistencies issues in idl


Modified:
   branches/SAMBA_4_0/source/librpc/idl/srvsvc.idl
   branches/SAMBA_4_0/source/rpc_server/srvsvc/dcesrv_srvsvc.c


Changeset:
Modified: branches/SAMBA_4_0/source/librpc/idl/srvsvc.idl
===================================================================
--- branches/SAMBA_4_0/source/librpc/idl/srvsvc.idl	2006-09-10 03:11:03 UTC (rev 18317)
+++ branches/SAMBA_4_0/source/librpc/idl/srvsvc.idl	2006-09-10 03:58:00 UTC (rev 18318)
@@ -1121,12 +1121,12 @@
 /* srvsvc_NetDisk         */
 /**************************/
 	typedef struct {
-		[flag(STR_LEN4)] string disc;
+		[flag(STR_LEN4)] string disk;
 	} srvsvc_NetDiskInfo0;
 
 	typedef struct {
 		uint32 count;
-		[size_is(count), length_is(count)] srvsvc_NetDiskInfo0 *discs;
+		[size_is(count), length_is(count)] srvsvc_NetDiskInfo0 *disks;
 	} srvsvc_NetDiskInfo;
 
 	/******************/
@@ -1134,7 +1134,7 @@
 	WERROR srvsvc_NetDiskEnum(
 		[in]      [string,charset(UTF16)] uint16 *server_unc,
 		[in]      uint32 level,
-		[in,out]  srvsvc_NetDiskInfo disks,
+		[in,out]  srvsvc_NetDiskInfo info,
 		[in]      uint32 maxlen,
 		[out]     uint32 totalentries,
 		[in,out]  uint32 *resume_handle

Modified: branches/SAMBA_4_0/source/rpc_server/srvsvc/dcesrv_srvsvc.c
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/srvsvc/dcesrv_srvsvc.c	2006-09-10 03:11:03 UTC (rev 18317)
+++ branches/SAMBA_4_0/source/rpc_server/srvsvc/dcesrv_srvsvc.c	2006-09-10 03:58:00 UTC (rev 18318)
@@ -1078,15 +1078,30 @@
 static WERROR srvsvc_NetDiskEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
 		       struct srvsvc_NetDiskEnum *r)
 {
-	r->out.disks.discs = NULL;
-	r->out.disks.count = 0;
+	r->out.info.disks = NULL;
+	r->out.info.count = 0;
 	r->out.totalentries = 0;
 	r->out.resume_handle = NULL;
 
 	switch (r->in.level) {
 	case 0:
 	{
-		return WERR_NOT_SUPPORTED;
+		/* we can safely hardcode the reply and report we have only one disk (C:) */
+		/* for some reason Windows wants 2 entries with the second being empty */
+		r->out.info.disks = talloc_array(mem_ctx, struct srvsvc_NetDiskInfo0, 2);
+		W_ERROR_HAVE_NO_MEMORY(r->out.info.disks);
+		r->out.info.count = 2;
+
+		r->out.info.disks[0].disk = talloc_strdup(mem_ctx, "C:");
+		W_ERROR_HAVE_NO_MEMORY(r->out.info.disks[0].disk);
+
+		r->out.info.disks[1].disk = talloc_strdup(mem_ctx, "");
+		W_ERROR_HAVE_NO_MEMORY(r->out.info.disks[1].disk);
+
+		r->out.totalentries = 1;
+		r->out.resume_handle = r->in.resume_handle;
+
+		return WERR_OK;
 	}
 	default:
 		return WERR_UNKNOWN_LEVEL;



More information about the samba-cvs mailing list