r18318: Implement DiskEnum
authorSimo Sorce <idra@samba.org>
Sun, 10 Sep 2006 03:58:00 +0000 (03:58 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 19:18:08 +0000 (14:18 -0500)
Fix spelling and consistencies issues in idl

source/librpc/idl/srvsvc.idl
source/rpc_server/srvsvc/dcesrv_srvsvc.c

index e33b0da3e5b3e4758ac08d880cf298af9790f9a9..8cd9d63864d189f1fc7a0fc0712684ba4d743deb 100644 (file)
 /* 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;
 
        /******************/
        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
index d852f7a40cd6093e0708a438f2d6c5d8f4c960ab..d850af5ebd12bab7e9517b93b5fde9c321fef05c 100644 (file)
@@ -1078,15 +1078,30 @@ static WERROR srvsvc_NetSrvSetInfo(struct dcesrv_call_state *dce_call, TALLOC_CT
 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;