Backport of pre-connect Hyper-V code
[freerdp-ubuntu-pcb-backport.git] / libfreerdp-utils / args.c
index cf10519..77d4036 100644 (file)
@@ -95,6 +95,7 @@ int freerdp_parse_args(rdpSettings* settings, int argc, char** argv,
                                "  --disable-full-window-drag: disables full window drag\n"
                                "  --disable-menu-animations: disables menu animations\n"
                                "  --disable-theming: disables theming\n"
+                               "  --no-nego: disable negotiation of security layer and enforce highest enabled security protocol\n"
                                "  --no-rdp: disable Standard RDP encryption\n"
                                "  --no-tls: disable TLS encryption\n"
                                "  --no-nla: disable network level authentication\n"
@@ -102,6 +103,8 @@ int freerdp_parse_args(rdpSettings* settings, int argc, char** argv,
                                "  --ignore-certificate: ignore verification of logon certificate\n"
                                "  --sec: force protocol security (rdp, tls or nla)\n"
                                "  --secure-checksum: use salted checksums with Standard RDP encryption\n"
+                               "  --pcid: preconnection id\n"
+                               "  --pcb: preconnection blob\n"
                                "  --version: print version information\n"
                                "\n", argv[0]);
                        return FREERDP_ARGS_PARSE_HELP; //TODO: What is the correct return
@@ -532,6 +535,10 @@ int freerdp_parse_args(rdpSettings* settings, int argc, char** argv,
                                return FREERDP_ARGS_PARSE_FAILURE;
                        }
                }
+               else if (strcmp("--no-nego", argv[index]) == 0)
+               {
+                       settings->security_layer_negotiation = false;
+               }
                else if (strcmp("--plugin", argv[index]) == 0)
                {
                        index++;
@@ -621,6 +628,28 @@ int freerdp_parse_args(rdpSettings* settings, int argc, char** argv,
                {
                        settings->secure_checksum = true;
                }
+               else if (strcmp("--pcid", argv[index]) == 0)
+               {
+                       index++;
+                       if (index == argc)
+                       {
+                               printf("missing preconnection id value\n");
+                               return -1;
+                       }
+                       settings->send_preconnection_pdu = true;
+                       settings->preconnection_id = atoi(argv[index]);
+               }
+               else if (strcmp("--pcb", argv[index]) == 0)
+               {
+                       index++;
+                       if (index == argc)
+                       {
+                               printf("missing preconnection blob value\n");
+                               return -1;
+                       }
+                       settings->send_preconnection_pdu = true;
+                       settings->preconnection_blob = xstrdup(argv[index]);
+               }
                else if (strcmp("--version", argv[index]) == 0)
                {
                        printf("This is FreeRDP version %s\n", FREERDP_VERSION_FULL);