Integrate unfix.org's IPv6 patches up to level 10, with rather a lot
[u/mdw/putty] / cmdline.c
index a67b013..d306959 100644 (file)
--- a/cmdline.c
+++ b/cmdline.c
@@ -137,6 +137,7 @@ int cmdline_process_param(char *p, char *value, int need_save, Config *cfg)
        /* This parameter must be processed immediately rather than being
         * saved. */
        do_defaults(value, cfg);
+       loaded_session = TRUE;
        return 2;
     }
     if (!strcmp(p, "-ssh")) {
@@ -313,6 +314,13 @@ int cmdline_process_param(char *p, char *value, int need_save, Config *cfg)
        cfg->nopty = 1;
     }
 
+    if (!strcmp(p, "-N")) {
+       RETURN(1);
+       UNAVAILABLE_IN(TOOLTYPE_FILETRANSFER | TOOLTYPE_NONNETWORK);
+       SAVEABLE(0);
+       cfg->ssh_no_shell = 1;
+    }
+
     if (!strcmp(p, "-C")) {
        RETURN(1);
        UNAVAILABLE_IN(TOOLTYPE_NONNETWORK);
@@ -340,6 +348,17 @@ int cmdline_process_param(char *p, char *value, int need_save, Config *cfg)
        cfg->keyfile = filename_from_str(value);
     }
 
+    if (!strcmp(p, "-4") || !strcmp(p, "-ipv4")) {
+       RETURN(1);
+       SAVEABLE(1);
+       cfg->addressfamily = ADDRTYPE_IPV4;
+    }
+    if (!strcmp(p, "-6") || !strcmp(p, "-ipv6")) {
+       RETURN(1);
+       SAVEABLE(1);
+       cfg->addressfamily = ADDRTYPE_IPV6;
+    }
+
     return ret;                               /* unrecognised */
 }