Loading
Add JSON support to smbstatus
Add JSON support to smbstatus and smbstatus profiling and tests for it.
Examplary output:
{
"timestamp": "2022-04-15T18:25:15.364891+0200",
"version": "4.17.0pre1-GIT-a0f12b9c80b",
"smb_conf": "/opt/sambaTest/etc/smb.conf",
"sessions": {
"3639217376": {
"session_id": "3639217376",
"server_id": {
"pid": "69650",
"task_id": "0",
"vnn": "4294967295",
"unique_id": "10756714984493602300"
},
"uid": 1000,
"gid": 1000,
"username": "janger",
"groupname": "janger",
"remote_machine": "127.0.0.1",
"hostname": "ipv4:127.0.0.1:59944",
"session_dialect": "SMB3_11",
"encryption": {
"cipher": "",
"degree": "none"
},
"signing": {
"cipher": "AES-128-GMAC",
"degree": "partial"
}
}
},
"tcons": {
"3813255619": {
"service": "gemeinsam",
"server_id": {
"pid": "69650",
"task_id": "0",
"vnn": "4294967295",
"unique_id": "10756714984493602300"
},
"tcon_id": "3813255619",
"session_id": "3639217376",
"machine": "127.0.0.1",
"connected_at": "2022-04-15T17:30:37+0200",
"encryption": {
"cipher": "AES-128-GMAC",
"degree": "full"
},
"signing": {
"cipher": "",
"degree": "none"
}
}
},
"open_files": {
"/home/janger/testfolder/hallo": {
"service_path": "/home/janger/testfolder",
"filename": "hallo",
"fileid": {
"devid": 59,
"inode": 11404245,
"extid": 0
},
"num_pending_deletes": 0,
"opens": {
"56839/2": {
"server_id": {
"pid": "69650",
"task_id": "0",
"vnn": "4294967295",
"unique_id": "10756714984493602300"
},
"uid": 1000,
"share_file_id": 2,
"sharemode": {
"hex": "0x00000003",
"NONE": false,
"READ": true,
"WRITE": true,
"DELETE": false,
"text": "RW"
},
"access_mask": {
"hex": "0x00000003",
"READ_DATA": true,
"WRITE_DATA": true,
"APPEND_DATA": false,
"READ_EA": false,
"WRITE_EA": false,
"EXECUTE": false,
"READ_ATTRIBUTES": false,
"WRITE_ATTRIBUTES": false,
"DELETE_CHILD": false,
"DELETE": false,
"READ_CONTROL": false,
"WRITE_DAC": false,
"SYNCHRONIZE": false,
"ACCESS_SYSTEM_SECURITY": false,
"text": "RW"
},
"caching": {
"READ": false,
"WRITE": false,
"HANDLE": false,
"hex": "0x00000000",
"text": ""
},
"oplock": {},
"lease": {},
"opened_at": "2022-04-15T17:30:38+0200"
}
}
}
}
}
If oplocks are used:
...
"oplock": {
"EXCLUSIVE": false,
"BATCH": false,
"LEVEL_II": true,
"LEASE": false,
"text": "NONE"
}
...
If leases are used:
...
"lease": {
"lease_key": "29316055-f55c-de10-c813-af7bf5a430bb",
"hex": "0x00000005",
"READ": true,
"WRITE": true,
"HANDLE": false,
"text": "RW"
}
...
With byte-range locks (-B, --byterange):
"byte_range_locks": {
"/home/janger/testfolder/hallo": {
"fileid": {
"devid": 59,
"inode": 11404245,
"extid": 0
},
"file_name": "hallo",
"share_path": "/home/janger/testfolder",
"locks": [
{
"server_id": {
"pid": "69650",
"task_id": "0",
"vnn": "4294967295",
"unique_id": "10756714984493602300"
},
"type": "R",
"flavour": "Posix",
"start": 0,
"size": 16
}
]
}
With notifies (-N, --notify):
"notify": {
"77247": {
"server_id": {
"pid": "69650",
"task_id": "0",
"vnn": "4294967295",
"unique_id": "10756714984493602300"
},
"path": "/home/janger/testfolder/testdir",
"filter": 4095,
"subdir_filter": 4095,
"creation_time": "1970-01-01T01:00:14.326582+01:00"
}
}
For profiling (-P, --profile):
{
"timestamp": "2022-04-15T18:40:43.112216+0200",
"version": "4.17.0pre1-GIT-a0f12b9c80b",
"smb_conf": "/opt/sambaTest2/etc/smb.conf",
"SMBD loop": {
"connect": {
"count": 2
},
"disconnect": {
"count": 1
},
...
},
"System Calls": {
"syscall_opendir": {
"count": 0,
"time": 0
},
...
},
"ACL Calls": {
"get_nt_acl": {
"count": 0,
"time": 0
},
...
},
"Stat Cache": {
"statcache_lookups": {
"count": 2
},
...
},
"SMB Calls": {
"SMBmkdir": {
"count": 0,
"time": 0
},
...
},
"Trans2 Calls": {
"Trans2_open": {
"count": 0,
"time": 0
},
...
},
"NT Transact Calls": {
"NT_transact_create": {
"count": 0,
"time": 0
},
...
},
"SMB2 Calls": {
"smb2_negprot": {
"count": 2,
"time": 3060,
"idle": 0,
"inbytes": 452,
"outbytes": 568
},
...
}
}
Open tasks
-
add tconn_id and sess_id to open dictionary(not possible) - check wrong creation_date in the files (error in notify code?)
Checklist
-
Commits have Signed-off-by:with name/author being identical to the commit author -
(optional) This MR is just one part towards a larger feature. -
(optional, if backport required) Bugzilla bug filed and BUG:tag added -
Test suite updated with functionality tests -
Test suite updated with negative tests -
Documentation updated -
CI timeout is 3h or higher (see Settings/CICD/General pipelines/ Timeout)
Reviewer's checklist:
-
There is a test suite reasonably covering new functionality or modifications -
Function naming, parameters, return values, types, etc., are consistent and according to README.Coding.md -
This feature/change has adequate documentation added -
No obvious mistakes in the code
Edited by J A