smbXcli: add helper functions to access the negotiated features
authorStefan Metzmacher <metze@samba.org>
Thu, 15 Sep 2011 12:02:49 +0000 (14:02 +0200)
committerStefan Metzmacher <metze@samba.org>
Thu, 24 Nov 2011 18:02:30 +0000 (19:02 +0100)
metze

libcli/smb/smbXcli_base.c
libcli/smb/smbXcli_base.h

index c2e628c34228573398409fea2caf97bee920021c..9038681f395da1d82b3129ba3d89d87d4b376fb0 100644 (file)
@@ -78,6 +78,7 @@ struct smbXcli_conn {
                        DATA_BLOB gss_blob;
                        uint8_t challenge[8];
                        const char *workgroup;
+                       const char *name;
                        int time_zone;
                        NTTIME system_time;
                } server;
@@ -329,6 +330,75 @@ const char *smbXcli_conn_remote_name(struct smbXcli_conn *conn)
        return conn->remote_name;
 }
 
+uint16_t smbXcli_conn_max_requests(struct smbXcli_conn *conn)
+{
+       if (conn->protocol >= PROTOCOL_SMB2_02) {
+               /*
+                * TODO...
+                */
+               return 1;
+       }
+
+       return conn->smb1.server.max_mux;
+}
+
+NTTIME smbXcli_conn_server_system_time(struct smbXcli_conn *conn)
+{
+       if (conn->protocol >= PROTOCOL_SMB2_02) {
+               return conn->smb2.server.system_time;
+       }
+
+       return conn->smb1.server.system_time;
+}
+
+const DATA_BLOB *smbXcli_conn_server_gss_blob(struct smbXcli_conn *conn)
+{
+       if (conn->protocol >= PROTOCOL_SMB2_02) {
+               return &conn->smb2.server.gss_blob;
+       }
+
+       return &conn->smb1.server.gss_blob;
+}
+
+const struct GUID *smbXcli_conn_server_guid(struct smbXcli_conn *conn)
+{
+       if (conn->protocol >= PROTOCOL_SMB2_02) {
+               return &conn->smb2.server.guid;
+       }
+
+       return &conn->smb1.server.guid;
+}
+
+uint32_t smb1cli_conn_capabilities(struct smbXcli_conn *conn)
+{
+       return conn->smb1.capabilities;
+}
+
+uint32_t smb1cli_conn_max_xmit(struct smbXcli_conn *conn)
+{
+       return conn->smb1.max_xmit;
+}
+
+uint32_t smb1cli_conn_server_session_key(struct smbXcli_conn *conn)
+{
+       return conn->smb1.server.session_key;
+}
+
+const uint8_t *smb1cli_conn_server_challenge(struct smbXcli_conn *conn)
+{
+       return conn->smb1.server.challenge;
+}
+
+uint16_t smb1cli_conn_server_security_mode(struct smbXcli_conn *conn)
+{
+       return conn->smb1.server.security_mode;
+}
+
+int smb1cli_conn_server_time_zone(struct smbXcli_conn *conn)
+{
+       return conn->smb1.server.time_zone;
+}
+
 bool smb1cli_conn_activate_signing(struct smbXcli_conn *conn,
                                   const DATA_BLOB user_session_key,
                                   const DATA_BLOB response)
@@ -1858,6 +1928,31 @@ bool smbXcli_conn_has_async_calls(struct smbXcli_conn *conn)
                || (talloc_array_length(conn->pending) != 0));
 }
 
+uint32_t smb2cli_conn_server_capabilities(struct smbXcli_conn *conn)
+{
+       return conn->smb2.server.capabilities;
+}
+
+uint16_t smb2cli_conn_server_security_mode(struct smbXcli_conn *conn)
+{
+       return conn->smb2.server.security_mode;
+}
+
+uint32_t smb2cli_conn_max_trans_size(struct smbXcli_conn *conn)
+{
+       return conn->smb2.server.max_trans_size;
+}
+
+uint32_t smb2cli_conn_max_read_size(struct smbXcli_conn *conn)
+{
+       return conn->smb2.server.max_read_size;
+}
+
+uint32_t smb2cli_conn_max_write_size(struct smbXcli_conn *conn)
+{
+       return conn->smb2.server.max_write_size;
+}
+
 struct tevent_req *smb2cli_req_create(TALLOC_CTX *mem_ctx,
                                      struct tevent_context *ev,
                                      struct smbXcli_conn *conn,
index 17c889c4e5170435a19fcc9c1e1568872d146de9..4593c0922e89e5752d7449d070f08ebfb6743f4d 100644 (file)
@@ -43,9 +43,21 @@ const struct sockaddr_storage *smbXcli_conn_local_sockaddr(struct smbXcli_conn *
 const struct sockaddr_storage *smbXcli_conn_remote_sockaddr(struct smbXcli_conn *conn);
 const char *smbXcli_conn_remote_name(struct smbXcli_conn *conn);
 
+uint16_t smbXcli_conn_max_requests(struct smbXcli_conn *conn);
+NTTIME smbXcli_conn_server_system_time(struct smbXcli_conn *conn);
+const DATA_BLOB *smbXcli_conn_server_gss_blob(struct smbXcli_conn *conn);
+const struct GUID *smbXcli_conn_server_guid(struct smbXcli_conn *conn);
+
 void smbXcli_req_unset_pending(struct tevent_req *req);
 bool smbXcli_req_set_pending(struct tevent_req *req);
 
+uint32_t smb1cli_conn_capabilities(struct smbXcli_conn *conn);
+uint32_t smb1cli_conn_max_xmit(struct smbXcli_conn *conn);
+uint32_t smb1cli_conn_server_session_key(struct smbXcli_conn *conn);
+const uint8_t *smb1cli_conn_server_challenge(struct smbXcli_conn *conn);
+uint16_t smb1cli_conn_server_security_mode(struct smbXcli_conn *conn);
+int smb1cli_conn_server_time_zone(struct smbXcli_conn *conn);
+
 bool smb1cli_conn_activate_signing(struct smbXcli_conn *conn,
                                   const DATA_BLOB user_session_key,
                                   const DATA_BLOB response);
@@ -117,6 +129,12 @@ NTSTATUS smb1cli_req_recv(struct tevent_req *req,
                          const struct smb1cli_req_expected_response *expected,
                          size_t num_expected);
 
+uint32_t smb2cli_conn_server_capabilities(struct smbXcli_conn *conn);
+uint16_t smb2cli_conn_server_security_mode(struct smbXcli_conn *conn);
+uint32_t smb2cli_conn_max_trans_size(struct smbXcli_conn *conn);
+uint32_t smb2cli_conn_max_read_size(struct smbXcli_conn *conn);
+uint32_t smb2cli_conn_max_write_size(struct smbXcli_conn *conn);
+
 struct tevent_req *smb2cli_req_create(TALLOC_CTX *mem_ctx,
                                      struct tevent_context *ev,
                                      struct smbXcli_conn *conn,