s3: Change sockaddr util function names for consistency
[samba.git] / source3 / libsmb / clidfs.c
index 16582f80490693db73d3151031828a8839b1a509..35922b13e9493d942160485a443e4e7a220c4067 100644 (file)
@@ -46,6 +46,7 @@ static struct cm_cred_struct {
        char *password;
        bool got_pass;
        bool use_kerberos;
+       bool fallback_after_kerberos;
        int signing_state;
 } cm_creds;
 
@@ -143,13 +144,13 @@ static struct cli_state *do_connect(TALLOC_CTX *ctx,
 
        server_n = server;
 
-       zero_addr(&ss);
+       zero_sockaddr(&ss);
 
        make_nmb_name(&calling, global_myname(), 0x0);
        make_nmb_name(&called , server, name_type);
 
  again:
-       zero_addr(&ss);
+       zero_sockaddr(&ss);
        if (have_ip)
                ss = dest_ss;
 
@@ -172,6 +173,7 @@ static struct cli_state *do_connect(TALLOC_CTX *ctx,
 
        c->protocol = max_protocol;
        c->use_kerberos = cm_creds.use_kerberos;
+       c->fallback_after_kerberos = cm_creds.fallback_after_kerberos;
        cli_setup_signing_state(c, cm_creds.signing_state);
 
        if (!cli_session_request(c, &calling, &called)) {
@@ -199,11 +201,16 @@ static struct cli_state *do_connect(TALLOC_CTX *ctx,
                return NULL;
        }
 
-       if (!cm_creds.got_pass) {
-               char *pass = getpass("Password: ");
+       if (!cm_creds.got_pass && !cm_creds.use_kerberos) {
+               char *label = NULL;
+               char *pass;
+               label = talloc_asprintf(ctx, "Enter %s's password: ",
+                       cm_creds.username);
+               pass = getpass(label);
                if (pass) {
                        cm_set_password(pass);
                }
+               TALLOC_FREE(label);
        }
 
        username = cm_creds.username ? cm_creds.username : "";
@@ -461,6 +468,9 @@ static void cm_set_password(const char *newpass)
        }
 }
 
+/****************************************************************************
+****************************************************************************/
+
 void cli_cm_set_credentials(void)
 {
        SAFE_FREE(cm_creds.username);
@@ -471,6 +481,7 @@ void cli_cm_set_credentials(void)
        }
 
        cm_creds.use_kerberos = get_cmdline_auth_info_use_kerberos();
+       cm_creds.fallback_after_kerberos = false;
        cm_creds.signing_state = get_cmdline_auth_info_signing_state();
 }
 
@@ -493,6 +504,51 @@ void cli_cm_set_dest_name_type(int type)
 /****************************************************************************
 ****************************************************************************/
 
+void cli_cm_set_signing_state(int state)
+{
+       cm_creds.signing_state = state;
+}
+
+/****************************************************************************
+****************************************************************************/
+
+void cli_cm_set_username(const char *username)
+{
+       SAFE_FREE(cm_creds.username);
+       cm_creds.username = SMB_STRDUP(username);
+}
+
+/****************************************************************************
+****************************************************************************/
+
+void cli_cm_set_password(const char *newpass)
+{
+       SAFE_FREE(cm_creds.password);
+       cm_creds.password = SMB_STRDUP(newpass);
+       if (cm_creds.password) {
+               cm_creds.got_pass = true;
+       }
+}
+
+/****************************************************************************
+****************************************************************************/
+
+void cli_cm_set_use_kerberos(void)
+{
+       cm_creds.use_kerberos = true;
+}
+
+/****************************************************************************
+****************************************************************************/
+
+void cli_cm_set_fallback_after_kerberos(void)
+{
+       cm_creds.fallback_after_kerberos = true;
+}
+
+/****************************************************************************
+****************************************************************************/
+
 void cli_cm_set_dest_ss(struct sockaddr_storage *pss)
 {
        dest_ss = *pss;
@@ -1054,7 +1110,7 @@ static bool cli_check_msdfs_proxy(TALLOC_CTX *ctx,
        split_dfs_path(ctx, refs[0].dfspath, pp_newserver,
                        pp_newshare, &newextrapath );
 
-       if (!pp_newserver || !pp_newshare) {
+       if ((*pp_newserver == NULL) || (*pp_newshare == NULL)) {
                return false;
        }