bool smbXcli_conn_dfs_supported(struct smbXcli_conn *conn)
{
- if(conn->protocol >= PROTOCOL_SMB2_02) {
- return (smb2cli_conn_server_capabilities(conn) & SMB2_CAP_DFS);
+ if (conn->protocol >= PROTOCOL_SMB2_02) {
+ if (smb2cli_conn_server_capabilities(conn) & SMB2_CAP_DFS) {
+ return true;
+ }
+
+ return false;
+ }
+
+ if (smb1cli_conn_capabilities(conn) & CAP_DFS) {
+ return true;
+ }
+
+ return false;
+}
+
+bool smbXcli_tcon_is_dfsroot(struct smbXcli_tcon *tcon)
+{
+ return tcon->is_dfsroot;
+}
+
+void smb1cli_tcon_set_optional_support(struct smbXcli_tcon *tcon,
+ uint16_t optional)
+{
+ if (tcon->conn == NULL) {
+ return;
}
- return (smb1cli_conn_capabilities(conn) & CAP_DFS);
+ if (optional & SMB_SHARE_IN_DFS) {
+ tcon->is_dfsroot = true;
+ }
+
+ if (!(smb1cli_conn_capabilities(tcon->conn) & CAP_DFS)) {
+ tcon->is_dfsroot = false;
+ }
}
uint32_t smb2cli_conn_server_capabilities(struct smbXcli_conn *conn)