r3323: more warning reductions
[bbaumbach/samba-autobuild/.git] / source4 / torture / gentest.c
index e914f98588680f7f4bb8afb5debe5da4d2a6e5d1..22cbb79769ce10aed717626be5a3e564c4ca0d6d 100644 (file)
@@ -51,7 +51,7 @@ static uint_t num_open_handles;
 /* state information for the servers. We open NINSTANCES connections to
    each server */
 static struct {
-       struct cli_state *cli[NINSTANCES];
+       struct smbcli_state *cli[NINSTANCES];
        char *server_name;
        char *share_name;
        char *username;
@@ -68,9 +68,9 @@ static struct {
 /* oplock break info */
 static struct {
        BOOL got_break;
-       uint16 fnum;
-       uint16 handle;
-       uint8 level;
+       uint16_t fnum;
+       uint16_t handle;
+       uint8_t level;
        BOOL do_close;
 } oplocks[NSERVERS][NINSTANCES];
 
@@ -94,8 +94,8 @@ static struct {
 
 #define BAD_HANDLE 0xFFFE
 
-static BOOL oplock_handler(struct cli_transport *transport, uint16 tid, uint16 fnum, uint8 level, void *private);
-static void idle_func(struct cli_transport *transport, void *private);
+static BOOL oplock_handler(struct smbcli_transport *transport, uint16_t tid, uint16_t fnum, uint8_t level, void *private);
+static void idle_func(struct smbcli_transport *transport, void *private);
 
 /*
   check if a string should be ignored. This is used as the basis
@@ -127,8 +127,8 @@ static BOOL connect_servers_fast(void)
        for (h=0;h<options.max_open_handles;h++) {
                if (!open_handles[h].active) continue;
                for (i=0;i<NSERVERS;i++) {
-                       if (!cli_close(servers[i].cli[open_handles[h].instance],
-                                      open_handles[h].server_fnum[i])) {
+                       if (NT_STATUS_IS_ERR((smbcli_close(servers[i].cli[open_handles[h].instance]->tree,
+                                      open_handles[h].server_fnum[i])))) {
                                return False;
                        }
                        open_handles[h].active = False;
@@ -158,8 +158,8 @@ static BOOL connect_servers(void)
        for (i=0;i<NSERVERS;i++) {
                for (j=0;j<NINSTANCES;j++) {
                        if (servers[i].cli[j]) {
-                               cli_tdis(servers[i].cli[j]);
-                               cli_shutdown(servers[i].cli[j]);
+                               smbcli_tdis(servers[i].cli[j]);
+                               smbcli_shutdown(servers[i].cli[j]);
                                servers[i].cli[j] = NULL;
                        }
                }
@@ -171,7 +171,7 @@ static BOOL connect_servers(void)
                        printf("Connecting to \\\\%s\\%s as %s - instance %d\n",
                               servers[i].server_name, servers[i].share_name, 
                               servers[i].username, j);
-                       status = cli_full_connection(&servers[i].cli[j],
+                       status = smbcli_full_connection(NULL, &servers[i].cli[j],
                                                     "gentest",
                                                     servers[i].server_name, NULL, 
                                                     servers[i].share_name, "?????", 
@@ -184,8 +184,8 @@ static BOOL connect_servers(void)
                                return False;
                        }
 
-                       cli_oplock_handler(servers[i].cli[j]->transport, oplock_handler, NULL);
-                       cli_transport_idle_handler(servers[i].cli[j]->transport, idle_func, 10, NULL);
+                       smbcli_oplock_handler(servers[i].cli[j]->transport, oplock_handler, NULL);
+                       smbcli_transport_idle_handler(servers[i].cli[j]->transport, idle_func, 1, NULL);
                }
        }
 
@@ -206,7 +206,7 @@ static uint_t time_skew(void)
 /*
   turn an fnum for an instance into a handle
 */
-static uint_t fnum_to_handle(int server, int instance, uint16 fnum)
+static uint_t fnum_to_handle(int server, int instance, uint16_t fnum)
 {
        uint_t i;
        for (i=0;i<options.max_open_handles;i++) {
@@ -224,7 +224,7 @@ static uint_t fnum_to_handle(int server, int instance, uint16 fnum)
 /*
   add some newly opened handles
 */
-static void gen_add_handle(int instance, const char *name, uint16 fnums[NSERVERS])
+static void gen_add_handle(int instance, const char *name, uint16_t fnums[NSERVERS])
 {
        int i, h;
        for (h=0;h<options.max_open_handles;h++) {
@@ -234,10 +234,10 @@ static void gen_add_handle(int instance, const char *name, uint16 fnums[NSERVERS
                /* we have to force close a random handle */
                h = random() % options.max_open_handles;
                for (i=0;i<NSERVERS;i++) {
-                       if (!cli_close(servers[i].cli[open_handles[h].instance]
-                                      open_handles[h].server_fnum[i])) {
+                       if (NT_STATUS_IS_ERR((smbcli_close(servers[i].cli[open_handles[h].instance]->tree
+                                      open_handles[h].server_fnum[i])))) {
                                printf("INTERNAL ERROR: Close failed when recovering handle! - %s\n",
-                                      cli_errstr(servers[i].cli[open_handles[h].instance]));
+                                      smbcli_errstr(servers[i].cli[open_handles[h].instance]->tree));
                        }
                }
                printf("Recovered handle %d\n", h);
@@ -260,7 +260,7 @@ static void gen_add_handle(int instance, const char *name, uint16 fnums[NSERVERS
 /*
   remove a closed handle
 */
-static void gen_remove_handle(int instance, uint16 fnums[NSERVERS])
+static void gen_remove_handle(int instance, uint16_t fnums[NSERVERS])
 {
        int h;
        for (h=0;h<options.max_open_handles;h++) {
@@ -290,7 +290,7 @@ static BOOL gen_chance(uint_t chance)
 /*
   map an internal handle number to a server fnum
 */
-static uint16 gen_lookup_fnum(int server, uint16 handle)
+static uint16_t gen_lookup_fnum(int server, uint16_t handle)
 {
        if (handle == BAD_HANDLE) return handle;
        return open_handles[handle].server_fnum[server];
@@ -299,9 +299,9 @@ static uint16 gen_lookup_fnum(int server, uint16 handle)
 /*
   return a file handle
 */
-static uint16 gen_fnum(int instance)
+static uint16_t gen_fnum(int instance)
 {
-       uint16 h;
+       uint16_t h;
        int count = 0;
 
        if (gen_chance(20)) return BAD_HANDLE;
@@ -320,7 +320,7 @@ static uint16 gen_fnum(int instance)
   return a file handle, but skewed so we don't close the last
   couple of handles too readily
 */
-static uint16 gen_fnum_close(int instance)
+static uint16_t gen_fnum_close(int instance)
 {
        if (num_open_handles < 3) {
                if (gen_chance(80)) return BAD_HANDLE;
@@ -342,7 +342,7 @@ static int gen_int_range(uint_t min, uint_t max)
   return a fnum for use as a root fid
   be careful to call GEN_SET_FNUM() when you use this!
 */
-static uint16 gen_root_fid(int instance)
+static uint16_t gen_root_fid(int instance)
 {
        if (gen_chance(5)) return gen_fnum(instance);
        return 0;
@@ -412,7 +412,7 @@ static const char *gen_fname(void)
 */
 static const char *gen_fname_open(int instance)
 {
-       uint16 h;
+       uint16_t h;
        h = gen_fnum(instance);
        if (h == BAD_HANDLE) {
                return gen_fname();
@@ -445,7 +445,7 @@ static const char *gen_pattern(void)
 /*
   generate a bitmask
 */
-static uint32 gen_bits_mask(uint_t mask)
+static uint32_t gen_bits_mask(uint_t mask)
 {
        uint_t ret = random();
        return ret & mask;
@@ -455,7 +455,7 @@ static uint32 gen_bits_mask(uint_t mask)
   generate a bitmask with high probability of the first mask
   and low of the second
 */
-static uint32 gen_bits_mask2(uint32 mask1, uint32 mask2)
+static uint32_t gen_bits_mask2(uint32_t mask1, uint32_t mask2)
 {
        if (gen_chance(10)) return gen_bits_mask(mask2);
        return gen_bits_mask(mask1);
@@ -472,7 +472,7 @@ static BOOL gen_bool(void)
 /*
   generate ntrename flags
 */
-static uint16 gen_rename_flags(void)
+static uint16_t gen_rename_flags(void)
 {
        if (gen_chance(30)) return RENAME_FLAG_RENAME;
        if (gen_chance(30)) return RENAME_FLAG_HARD_LINK;
@@ -484,7 +484,7 @@ static uint16 gen_rename_flags(void)
 /*
   return a lockingx lock mode
 */
-static uint16 gen_lock_mode(void)
+static uint16_t gen_lock_mode(void)
 {
        if (gen_chance(5))  return gen_bits_mask(0xFFFF);
        if (gen_chance(20)) return gen_bits_mask(0x1F);
@@ -494,7 +494,7 @@ static uint16 gen_lock_mode(void)
 /*
   generate a pid 
 */
-static uint16 gen_pid(void)
+static uint16_t gen_pid(void)
 {
        if (gen_chance(10)) return gen_bits_mask(0xFFFF);
        return getpid();
@@ -511,7 +511,7 @@ static SMB_OFF_T gen_lock_count(void)
 /*
   generate a ntcreatex flags field
 */
-static uint32 gen_ntcreatex_flags(void)
+static uint32_t gen_ntcreatex_flags(void)
 {
        if (gen_chance(70)) return NTCREATEX_FLAGS_EXTENDED;
        return gen_bits_mask2(0x1F, 0xFFFFFFFF);
@@ -520,7 +520,7 @@ static uint32 gen_ntcreatex_flags(void)
 /*
   generate a NT access mask
 */
-static uint32 gen_access_mask(void)
+static uint32_t gen_access_mask(void)
 {
        if (gen_chance(50)) return SEC_RIGHT_MAXIMUM_ALLOWED;
        if (gen_chance(20)) return GENERIC_RIGHTS_FILE_ALL_ACCESS;
@@ -530,7 +530,7 @@ static uint32 gen_access_mask(void)
 /*
   generate a ntcreatex create options bitfield
 */
-static uint32 gen_create_options(void)
+static uint32_t gen_create_options(void)
 {
        if (gen_chance(20)) return gen_bits_mask(0xFFFFFFFF);
        if (gen_chance(50)) return 0;
@@ -540,7 +540,7 @@ static uint32 gen_create_options(void)
 /*
   generate a ntcreatex open disposition
 */
-static uint32 gen_open_disp(void)
+static uint32_t gen_open_disp(void)
 {
        if (gen_chance(10)) return gen_bits_mask(0xFFFFFFFF);
        return gen_int_range(0, 5);
@@ -549,7 +549,7 @@ static uint32 gen_open_disp(void)
 /*
   generate an openx open mode
 */
-static uint16 gen_openx_mode(void)
+static uint16_t gen_openx_mode(void)
 {
        if (gen_chance(20)) return gen_bits_mask(0xFFFF);
        if (gen_chance(20)) return gen_bits_mask(0xFF);
@@ -559,7 +559,7 @@ static uint16 gen_openx_mode(void)
 /*
   generate an openx flags field
 */
-static uint16 gen_openx_flags(void)
+static uint16_t gen_openx_flags(void)
 {
        if (gen_chance(20)) return gen_bits_mask(0xFFFF);
        return gen_bits_mask(0x7);
@@ -568,7 +568,7 @@ static uint16 gen_openx_flags(void)
 /*
   generate an openx open function
 */
-static uint16 gen_openx_func(void)
+static uint16_t gen_openx_func(void)
 {
        if (gen_chance(20)) return gen_bits_mask(0xFFFF);
        return gen_bits_mask(0x13);
@@ -577,7 +577,7 @@ static uint16 gen_openx_func(void)
 /*
   generate a file attrib combination
 */
-static uint32 gen_attrib(void)
+static uint32_t gen_attrib(void)
 {
        if (gen_chance(20)) return gen_bits_mask(0xFFFFFFFF);
        return gen_bits_mask(FILE_ATTRIBUTE_NORMAL | FILE_ATTRIBUTE_DIRECTORY);
@@ -605,7 +605,7 @@ static NTTIME gen_nttime(void)
 /*
   generate a milliseconds protocol timeout
 */
-static uint32 gen_timeout(void)
+static uint32_t gen_timeout(void)
 {
        if (gen_chance(98)) return 0;
        return random() % 50;
@@ -631,7 +631,7 @@ static uint_t gen_alloc_size(void)
 /*
   generate an ea_struct
 */
-struct ea_struct gen_ea_struct(void)
+static struct ea_struct gen_ea_struct(void)
 {
        struct ea_struct ea;
        const char *names[] = {"EAONE", 
@@ -670,13 +670,13 @@ struct ea_struct gen_ea_struct(void)
 /*
   this is called when a change notify reply comes in
 */
-static void async_notify(struct cli_request *req)
+static void async_notify(struct smbcli_request *req)
 {
        struct smb_notify notify;
        NTSTATUS status;
        int i, j;
-       uint16 tid;
-       struct cli_transport *transport = req->transport;
+       uint16_t tid;
+       struct smbcli_transport *transport = req->transport;
 
        tid = SVAL(req->in.hdr, HDR_TID);
 
@@ -704,13 +704,13 @@ static void async_notify(struct cli_request *req)
 /*
   the oplock handler will either ack the break or close the file
 */
-static BOOL oplock_handler(struct cli_transport *transport, uint16 tid, uint16 fnum, uint8 level, void *private)
+static BOOL oplock_handler(struct smbcli_transport *transport, uint16_t tid, uint16_t fnum, uint8_t level, void *private)
 {
        union smb_close io;
        NTSTATUS status;
        int i, j;
        BOOL do_close;
-       struct cli_tree *tree = NULL;
+       struct smbcli_tree *tree = NULL;
 
        srandom(current_op.seed);
        do_close = gen_chance(50);
@@ -736,7 +736,7 @@ static BOOL oplock_handler(struct cli_transport *transport, uint16 tid, uint16 f
 
        if (!do_close) {
                printf("oplock ack fnum=%d\n", fnum);
-               return cli_oplock_ack(tree, fnum, level == 1? 0x102 : 2);
+               return smbcli_oplock_ack(tree, fnum, level);
        }
 
        printf("oplock close fnum=%d\n", fnum);
@@ -758,19 +758,14 @@ static BOOL oplock_handler(struct cli_transport *transport, uint16 tid, uint16 f
   an operation on another connection blocking until that break is acked
   we check for operations on all transports in the idle function
 */
-static void idle_func(struct cli_transport *transport, void *private)
+static void idle_func(struct smbcli_transport *transport, void *private)
 {
        int i, j;
        for (i=0;i<NSERVERS;i++) {
                for (j=0;j<NINSTANCES;j++) {
                        if (servers[i].cli[j] &&
-                           transport != servers[i].cli[j]->transport &&
-                           cli_transport_pending(servers[i].cli[j]->transport)) {
-                               if (!cli_request_receive_next(servers[i].cli[j]->transport)) {
-                                       printf("Connection to server %d instance %d died!\n",
-                                              i, j);
-                                       exit(1);
-                               }
+                           transport != servers[i].cli[j]->transport) {
+                               smbcli_transport_process(servers[i].cli[j]->transport);
                        }
                }
        }
@@ -808,13 +803,7 @@ static void check_pending(void)
 
        for (j=0;j<NINSTANCES;j++) {
                for (i=0;i<NSERVERS;i++) {
-                       if (cli_transport_pending(servers[i].cli[j]->transport)) {
-                               if (!cli_request_receive_next(servers[i].cli[j]->transport)) {
-                                       printf("Connection to server %d instance %d died!\n",
-                                              i, j);
-                                       exit(1);                                        
-                               }
-                       }
+                       smbcli_transport_process(servers[i].cli[j]->transport);
                }
        }       
 }
@@ -852,7 +841,7 @@ again:
        for (j=0;j<NINSTANCES;j++) {
                if (oplocks[0][j].got_break &&
                    oplocks[0][j].do_close) {
-                       uint16 fnums[NSERVERS];
+                       uint16_t fnums[NSERVERS];
                        for (i=0;i<NSERVERS;i++) {
                                fnums[i] = oplocks[i][j].fnum;
                        }
@@ -949,7 +938,7 @@ again:
        ZERO_STRUCT(oplocks); \
        ZERO_STRUCT(notifies); \
        for (i=0;i<NSERVERS;i++) { \
-               struct cli_tree *tree = servers[i].cli[instance]->tree; \
+               struct smbcli_tree *tree = servers[i].cli[instance]->tree; \
                status[i] = call; \
        } \
        current_op.status = status[0]; \
@@ -968,7 +957,7 @@ again:
 } while(0)
 
 #define ADD_HANDLE(name, field) do { \
-       uint16 fnums[NSERVERS]; \
+       uint16_t fnums[NSERVERS]; \
        int i; \
        for (i=0;i<NSERVERS;i++) { \
                fnums[i] = parm[i].field; \
@@ -977,7 +966,7 @@ again:
 } while(0)
 
 #define REMOVE_HANDLE(field) do { \
-       uint16 fnums[NSERVERS]; \
+       uint16_t fnums[NSERVERS]; \
        int i; \
        for (i=0;i<NSERVERS;i++) { \
                fnums[i] = parm[i].field; \
@@ -1031,12 +1020,12 @@ again:
 } while(0)
 
 #define CHECK_NTTIMES_EQUAL(field) do { \
-       if (ABS(nt_time_to_unix(&parm[0].field) - \
-               nt_time_to_unix(&parm[1].field)) > time_skew() && \
+       if (ABS(nt_time_to_unix(parm[0].field) - \
+               nt_time_to_unix(parm[1].field)) > time_skew() && \
            !ignore_pattern(#field)) { \
                printf("Mismatch in %s - 0x%x 0x%x\n", #field, \
-                      (int)nt_time_to_unix(&parm[0].field), \
-                      (int)nt_time_to_unix(&parm[1].field)); \
+                      (int)nt_time_to_unix(parm[0].field), \
+                      (int)nt_time_to_unix(parm[1].field)); \
                return False; \
        } \
 } while(0)
@@ -1290,7 +1279,7 @@ static BOOL handler_ntrename(int instance)
        parm[0].ntrename.in.old_name = gen_fname();
        parm[0].ntrename.in.new_name = gen_fname();
        parm[0].ntrename.in.attrib = gen_attrib();
-       parm[0].ntrename.in.unknown = gen_bits_mask2(0, 0xFFFFFFF);
+       parm[0].ntrename.in.cluster_size = gen_bits_mask2(0, 0xFFFFFFF);
        parm[0].ntrename.in.flags = gen_rename_flags();
 
        GEN_COPY_PARM;
@@ -1422,7 +1411,7 @@ static void gen_fileinfo(int instance, union smb_fileinfo *info)
        int i;
        #define LVL(v) {RAW_FILEINFO_ ## v, "RAW_FILEINFO_" #v}
        struct {
-               enum fileinfo_level level;
+               enum smb_fileinfo_level level;
                const char *name;
        }  levels[] = {
                LVL(GETATTR), LVL(GETATTRE), LVL(STANDARD),
@@ -1571,8 +1560,7 @@ static BOOL cmp_fileinfo(int instance,
                break;
 
        case RAW_FILEINFO_INTERNAL_INFORMATION:
-               CHECK_EQUAL(internal_information.out.device);
-               CHECK_EQUAL(internal_information.out.inode);
+               CHECK_EQUAL(internal_information.out.file_id);
                break;
 
        case RAW_FILEINFO_ACCESS_INFORMATION:
@@ -1657,7 +1645,7 @@ static void gen_setfileinfo(int instance, union smb_setfileinfo *info)
        #undef LVL
        #define LVL(v) {RAW_SFILEINFO_ ## v, "RAW_SFILEINFO_" #v}
        struct {
-               enum setfileinfo_level level;
+               enum smb_setfileinfo_level level;
                const char *name;
        }  levels[] = {
 #if 0
@@ -1792,7 +1780,7 @@ static BOOL handler_notify(int instance)
        GEN_SET_FNUM(in.fnum);
 
        for (n=0;n<NSERVERS;n++) {
-               struct cli_request *req;
+               struct smbcli_request *req;
                req = smb_raw_changenotify_send(servers[n].cli[instance]->tree, &parm[n]);
                req->async.fn = async_notify;
        }
@@ -1807,14 +1795,14 @@ static void wipe_files(void)
 {
        int i;
        for (i=0;i<NSERVERS;i++) {
-               int n = cli_deltree(servers[i].cli[0], "\\gentest");
+               int n = smbcli_deltree(servers[i].cli[0]->tree, "\\gentest");
                if (n == -1) {
                        printf("Failed to wipe tree on server %d\n", i);
                        exit(1);
                }
-               if (!cli_mkdir(servers[i].cli[0], "\\gentest")) {
+               if (NT_STATUS_IS_ERR(smbcli_mkdir(servers[i].cli[0]->tree, "\\gentest"))) {
                        printf("Failed to create \\gentest - %s\n",
-                              cli_errstr(servers[i].cli[0]));
+                              smbcli_errstr(servers[i].cli[0]->tree));
                        exit(1);
                }
                if (n > 0) {
@@ -1925,7 +1913,7 @@ static int run_test(void)
                current_op.opnum = op;
                current_op.name = gen_ops[which_op].name;
                current_op.status = NT_STATUS_OK;
-               current_op.mem_ctx = talloc_init(current_op.name);
+               current_op.mem_ctx = talloc_init("%s", current_op.name);
 
                ret = gen_ops[which_op].handler(instance);
 
@@ -2080,7 +2068,7 @@ static void usage(void)
 "Usage:\n\
   gentest2 //server1/share1 //server2/share2 [options..]\n\
   options:\n\
-        -U user%%pass        (must be specified twice)\n\
+        -U user%%pass        (can be specified twice)\n\
         -s seed\n\
         -o numops\n\
         -a            (show all ops)\n\
@@ -2191,10 +2179,14 @@ static void usage(void)
                }
        }
 
-       if (!servers[0].username || !servers[1].username) {
+       if (!servers[0].username) {
                usage();
                return -1;
        }
+       if (!servers[1].username) {
+               servers[1].username = servers[0].username;
+               servers[1].password = servers[0].password;
+       }
 
        printf("seed=%u\n", options.seed);