*/
#include "includes.h"
+#include "libsmb/libsmb.h"
+#include "system/filesys.h"
+#include "locking/proto.h"
static fstring password;
static fstring username;
static int got_pass;
static int numops = 1000;
-static BOOL showall;
-static BOOL analyze;
-static BOOL hide_unlock_fails;
-static BOOL use_oplocks;
+static bool showall;
+static bool analyze;
+static bool hide_unlock_fails;
+static bool use_oplocks;
extern char *optarg;
extern int optind;
static int try_open(struct cli_state *c, char *nfs, int fstype, const char *fname, int flags)
{
- pstring path;
+ char *path;
switch (fstype) {
case FSTYPE_SMB:
- return cli_open(c, fname, flags, DENY_NONE);
+ {
+ uint16_t fd;
+ if (!NT_STATUS_IS_OK(cli_openx(c, fname, flags, DENY_NONE, &fd))) {
+ return -1;
+ }
+ return fd;
+ }
case FSTYPE_NFS:
- slprintf(path, sizeof(path), "%s%s", nfs, fname);
- pstring_sub(path,"\\", "/");
- return open(path, flags, 0666);
+ if (asprintf(&path, "%s%s", nfs, fname) > 0) {
+ int ret;
+ string_replace(path,'\\', '/');
+ ret = open(path, flags, 0666);
+ SAFE_FREE(path);
+ return ret;
+ }
+ break;
}
return -1;
}
-static BOOL try_close(struct cli_state *c, int fstype, int fd)
+static bool try_close(struct cli_state *c, int fstype, int fd)
{
switch (fstype) {
case FSTYPE_SMB:
- return cli_close(c, fd);
+ return NT_STATUS_IS_OK(cli_close(c, fd));
case FSTYPE_NFS:
return close(fd) == 0;
return False;
}
-static BOOL try_lock(struct cli_state *c, int fstype,
+static bool try_lock(struct cli_state *c, int fstype,
int fd, unsigned start, unsigned len,
enum brl_type op)
{
switch (fstype) {
case FSTYPE_SMB:
- return cli_lock(c, fd, start, len, LOCK_TIMEOUT, op);
+ return NT_STATUS_IS_OK(cli_lock32(c, fd, start, len,
+ LOCK_TIMEOUT, op));
case FSTYPE_NFS:
lock.l_type = (op==READ_LOCK) ? F_RDLCK:F_WRLCK;
return False;
}
-static BOOL try_unlock(struct cli_state *c, int fstype,
+static bool try_unlock(struct cli_state *c, int fstype,
int fd, unsigned start, unsigned len)
{
struct flock lock;
switch (fstype) {
case FSTYPE_SMB:
- return cli_unlock(c, fd, start, len);
+ return NT_STATUS_IS_OK(cli_unlock(c, fd, start, len));
case FSTYPE_NFS:
lock.l_type = F_UNLCK;
server_n = server;
if (!got_pass) {
- char *pass = getpass("Password: ");
- if (pass) {
- fstrcpy(password, pass);
+ char pwd[256] = {0};
+ int rc;
+
+ rc = samba_getpass("Password: ", pwd, sizeof(pwd), false, false);
+ if (rc == 0) {
+ fstrcpy(password, pwd);
}
}
nt_status = cli_full_connection(&c, myname, server_n, NULL, 0, share, "?????",
username, lp_workgroup(), password, 0,
- Undefined, NULL);
+ SMB_SIGNING_DEFAULT);
if (!NT_STATUS_IS_OK(nt_status)) {
DEBUG(0, ("cli_full_connection failed with error %s\n", nt_errstr(nt_status)));
-static BOOL test_one(struct cli_state *cli[NSERVERS][NCONNECTIONS],
+static bool test_one(struct cli_state *cli[NSERVERS][NCONNECTIONS],
char *nfs[NSERVERS],
int fnum[NSERVERS][NUMFSTYPES][NCONNECTIONS][NFILES],
struct record *rec)
unsigned r2 = rec->r2;
enum brl_type op;
int server;
- BOOL ret[NSERVERS];
+ bool ret[NSERVERS];
if (r1 < READ_PCT) {
op = READ_LOCK;
}
}
for (server=0;server<NSERVERS;server++) {
- cli_unlink(cli[server][0], FILENAME);
+ cli_unlink(cli[server][0], FILENAME, FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN);
}
}
setlinebuf(stdout);
- dbf = x_stderr;
-
if (argc < 5 || argv[1][0] == '-') {
usage();
exit(1);
}
+ setup_logging(argv[0], DEBUG_STDOUT);
+
share1 = argv[1];
share2 = argv[2];
nfspath1 = argv[3];
all_string_sub(share1,"/","\\",0);
all_string_sub(share2,"/","\\",0);
- setup_logging(argv[0],True);
-
argc -= 4;
argv += 4;
- lp_load(dyn_CONFIGFILE,True,False,False,True);
+ lp_load_global(get_dyn_CONFIGFILE());
load_interfaces();
if (getenv("USER")) {
DEBUG(0,("seed=%u\n", seed));
srandom(seed);
- locking_init(1);
+ locking_init_readonly();
test_locks(share1, share2, nfspath1, nfspath2);
return(0);