1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-03 13:47:25 +03:00

New info level tester.

Jeremy.
This commit is contained in:
Jeremy Allison -
parent 0fcf200633
commit 9297ae69a7
2 changed files with 90 additions and 0 deletions

View File

@ -593,3 +593,46 @@ BOOL cli_qfileinfo(struct cli_state *cli, int fnum,
return True;
}
/****************************************************************************
send a qfileinfo call
****************************************************************************/
BOOL cli_qfileinfo_test(struct cli_state *cli, int fnum, int level, char *outdata)
{
int data_len = 0;
int param_len = 0;
uint16 setup = TRANSACT2_QFILEINFO;
pstring param;
char *rparam=NULL, *rdata=NULL;
/* if its a win95 server then fail this - win95 totally screws it
up */
if (cli->win95) return False;
param_len = 4;
memset(param, 0, param_len);
SSVAL(param, 0, fnum);
SSVAL(param, 2, level);
if (!cli_send_trans(cli, SMBtrans2,
NULL, /* name */
-1, 0, /* fid, flags */
&setup, 1, 0, /* setup, length, max */
param, param_len, 2, /* param, length, max */
NULL, data_len, cli->max_xmit /* data, length, max */
)) {
return False;
}
if (!cli_receive_trans(cli, SMBtrans2,
&rparam, &param_len,
&rdata, &data_len)) {
return False;
}
memcpy(outdata, rdata, data_len);
if (rdata) free(rdata);
if (rparam) free(rparam);
return True;
}

View File

@ -1929,6 +1929,52 @@ static void run_trans2test(int dummy)
printf("trans2 test finished\n");
}
/*
This checks new W2K calls.
*/
void new_trans(struct cli_state *pcli, int fnum, int level)
{
char buf[4096];
memset(buf, 0xff, sizeof(buf));
if (!cli_qfileinfo_test(pcli, fnum, level, buf)) {
printf("ERROR: qfileinfo (%d) failed (%s)\n", level, cli_errstr(pcli));
} else {
printf("qfileinfo: level %d\n", level);
dump_data(0, buf, 256);
printf("\n");
}
}
static void run_w2ktest(int dummy)
{
static struct cli_state cli;
int fnum;
char *fname = "\\w2ktest\\w2k.tst";
int level;
printf("starting w2k test\n");
if (!open_connection(&cli)) {
return;
}
fnum = cli_open(&cli, fname,
O_RDWR | O_CREAT , DENY_NONE);
for (level = 1004; level < 1040; level++)
new_trans(&cli, fnum, level);
cli_close(&cli, fnum);
close_connection(&cli);
printf("w2k test finished\n");
}
/*
this is a harness for some oplock tests
@ -2817,6 +2863,7 @@ static struct {
{"RW3", run_readwritelarge, 0},
{"OPEN", run_opentest, 0},
{"DELETE", run_deletetest, 0},
{"W2K", run_w2ktest, 0},
{NULL, NULL, 0}};