306
bool cli_get_fs_full_size_info(struct cli_state *cli,
307
SMB_BIG_UINT *total_allocation_units,
308
SMB_BIG_UINT *caller_allocation_units,
309
SMB_BIG_UINT *actual_allocation_units,
310
SMB_BIG_UINT *sectors_per_allocation_unit,
311
SMB_BIG_UINT *bytes_per_sector)
316
char *rparam=NULL, *rdata=NULL;
317
unsigned int rparam_count=0, rdata_count=0;
319
setup = TRANSACT2_QFSINFO;
321
SSVAL(param,0,SMB_FS_FULL_SIZE_INFORMATION);
323
if (!cli_send_trans(cli, SMBtrans2,
332
if (!cli_receive_trans(cli, SMBtrans2,
333
&rparam, &rparam_count,
334
&rdata, &rdata_count)) {
338
if (cli_is_error(cli)) {
345
if (rdata_count != 32) {
349
if (total_allocation_units) {
350
*total_allocation_units = BIG_UINT(rdata, 0);
352
if (caller_allocation_units) {
353
*caller_allocation_units = BIG_UINT(rdata,8);
355
if (actual_allocation_units) {
356
*actual_allocation_units = BIG_UINT(rdata,16);
358
if (sectors_per_allocation_unit) {
359
*sectors_per_allocation_unit = IVAL(rdata,24);
361
if (bytes_per_sector) {
362
*bytes_per_sector = IVAL(rdata,28);
372
bool cli_get_posix_fs_info(struct cli_state *cli,
373
uint32 *optimal_transfer_size,
375
SMB_BIG_UINT *total_blocks,
376
SMB_BIG_UINT *blocks_available,
377
SMB_BIG_UINT *user_blocks_available,
378
SMB_BIG_UINT *total_file_nodes,
379
SMB_BIG_UINT *free_file_nodes,
380
SMB_BIG_UINT *fs_identifier)
385
char *rparam=NULL, *rdata=NULL;
386
unsigned int rparam_count=0, rdata_count=0;
388
setup = TRANSACT2_QFSINFO;
390
SSVAL(param,0,SMB_QUERY_POSIX_FS_INFO);
392
if (!cli_send_trans(cli, SMBtrans2,
401
if (!cli_receive_trans(cli, SMBtrans2,
402
&rparam, &rparam_count,
403
&rdata, &rdata_count)) {
407
if (cli_is_error(cli)) {
414
if (rdata_count != 56) {
418
if (optimal_transfer_size) {
419
*optimal_transfer_size = IVAL(rdata, 0);
422
*block_size = IVAL(rdata,4);
425
*total_blocks = BIG_UINT(rdata,8);
427
if (blocks_available) {
428
*blocks_available = BIG_UINT(rdata,16);
430
if (user_blocks_available) {
431
*user_blocks_available = BIG_UINT(rdata,24);
433
if (total_file_nodes) {
434
*total_file_nodes = BIG_UINT(rdata,32);
436
if (free_file_nodes) {
437
*free_file_nodes = BIG_UINT(rdata,40);
440
*fs_identifier = BIG_UINT(rdata,48);
306
451
/******************************************************************************
307
452
Send/receive the request encryption blob.
308
453
******************************************************************************/