root/source4/torture/smb2/dir.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. torture_smb2_find_dir
  2. torture_smb2_dir

   1 /* 
   2    Unix SMB/CIFS implementation.
   3 
   4    SMB2 dir list test suite
   5 
   6    Copyright (C) Andrew Tridgell 2005
   7    
   8    This program is free software; you can redistribute it and/or modify
   9    it under the terms of the GNU General Public License as published by
  10    the Free Software Foundation; either version 3 of the License, or
  11    (at your option) any later version.
  12    
  13    This program is distributed in the hope that it will be useful,
  14    but WITHOUT ANY WARRANTY; without even the implied warranty of
  15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16    GNU General Public License for more details.
  17    
  18    You should have received a copy of the GNU General Public License
  19    along with this program.  If not, see <http://www.gnu.org/licenses/>.
  20 */
  21 
  22 #include "includes.h"
  23 #include "libcli/smb2/smb2.h"
  24 #include "libcli/smb2/smb2_calls.h"
  25 
  26 #include "torture/torture.h"
  27 #include "torture/smb2/proto.h"
  28 
  29 /*
  30   test find continue
  31 */
  32 static bool torture_smb2_find_dir(struct smb2_tree *tree)
     /* [<][>][^][v][top][bottom][index][help] */
  33 {
  34         struct smb2_handle handle;
  35         NTSTATUS status;
  36         int i;
  37         struct smb2_find f;
  38         bool ret = true;
  39         union smb_search_data *d;
  40         uint_t count;
  41 
  42         status = smb2_util_roothandle(tree, &handle);
  43         if (!NT_STATUS_IS_OK(status)) {
  44                 return false;
  45         }
  46 
  47         ZERO_STRUCT(f);
  48         f.in.file.handle        = handle;
  49         f.in.pattern            = "*";
  50         f.in.continue_flags     = SMB2_CONTINUE_FLAG_SINGLE;
  51         f.in.max_response_size  = 0x100;
  52         f.in.level              = SMB2_FIND_BOTH_DIRECTORY_INFO;
  53 
  54         do {
  55                 status = smb2_find_level(tree, tree, &f, &count, &d);
  56                 if (!NT_STATUS_IS_OK(status)) {
  57                         printf("SMB2_FIND_ID_BOTH_DIRECTORY_INFO failed - %s\n", nt_errstr(status));
  58                         break;
  59                 }
  60 
  61                 printf("Got %d files\n", count);
  62                 for (i=0;i<count;i++) {
  63                         printf("\t'%s'\n", 
  64                                d[i].both_directory_info.name.s);
  65                 }
  66                 f.in.continue_flags = 0;
  67                 f.in.max_response_size  = 4096;
  68         } while (count != 0);
  69 
  70 
  71         return ret;
  72 }
  73 
  74 
  75 /* 
  76    basic testing of directory listing with continue
  77 */
  78 bool torture_smb2_dir(struct torture_context *torture)
     /* [<][>][^][v][top][bottom][index][help] */
  79 {
  80         TALLOC_CTX *mem_ctx = talloc_new(NULL);
  81         struct smb2_tree *tree;
  82         bool ret = true;
  83 
  84         if (!torture_smb2_connection(torture, &tree)) {
  85                 return false;
  86         }
  87 
  88         ret &= torture_smb2_find_dir(tree);
  89 
  90         talloc_free(mem_ctx);
  91 
  92         return ret;
  93 }

/* [<][>][^][v][top][bottom][index][help] */