summaryrefslogtreecommitdiff
path: root/crypto
diff options
context:
space:
mode:
authordes <des@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>2019-03-27 15:17:29 +0000
committerdes <des@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>2019-03-27 15:17:29 +0000
commit5fd647184936eda9dfd10261a7aaa6b0481cb430 (patch)
treece88d390c1e320eab9800a3d0c59f8e892e271f2 /crypto
parent8152f9c84b85b8a8ca05766725e17f5ffa4ec3a3 (diff)
downloadfreebsd-5fd647184936eda9dfd10261a7aaa6b0481cb430.tar.gz
freebsd-5fd647184936eda9dfd10261a7aaa6b0481cb430.tar.bz2
Add workaround for a QoS-related bug in VMWare Workstation.
Submitted by: yuripv Differential Revision: https://reviews.freebsd.org/D18636 git-svn-id: http://svn.freebsd.org/base/head@345579 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Diffstat (limited to 'crypto')
-rw-r--r--crypto/openssh/readconf.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/crypto/openssh/readconf.c b/crypto/openssh/readconf.c
index f97a6ac72a9..9ed6902a0f4 100644
--- a/crypto/openssh/readconf.c
+++ b/crypto/openssh/readconf.c
@@ -16,6 +16,9 @@
__RCSID("$FreeBSD$");
#include <sys/types.h>
+#ifdef VMWARE_GUEST_WORKAROUND
+#include <sys/sysctl.h>
+#endif
#include <sys/stat.h>
#include <sys/socket.h>
#include <sys/wait.h>
@@ -1954,6 +1957,15 @@ fill_default_options(Options * options)
{
char *all_cipher, *all_mac, *all_kex, *all_key;
int r;
+#ifdef VMWARE_GUEST_WORKAROUND
+ char scval[7]; /* "vmware\0" */
+ size_t scsiz = sizeof(scval);
+ int vmwguest = 0;
+
+ if (sysctlbyname("kern.vm_guest", scval, &scsiz, NULL, 0) == 0 &&
+ strcmp(scval, "vmware") == 0)
+ vmwguest = 1;
+#endif
if (options->forward_agent == -1)
options->forward_agent = 0;
@@ -2088,8 +2100,18 @@ fill_default_options(Options * options)
if (options->visual_host_key == -1)
options->visual_host_key = 0;
if (options->ip_qos_interactive == -1)
+#ifdef VMWARE_GUEST_WORKAROUND
+ if (vmwguest)
+ options->ip_qos_interactive = IPTOS_LOWDELAY;
+ else
+#endif
options->ip_qos_interactive = IPTOS_DSCP_AF21;
if (options->ip_qos_bulk == -1)
+#ifdef VMWARE_GUEST_WORKAROUND
+ if (vmwguest)
+ options->ip_qos_bulk = IPTOS_THROUGHPUT;
+ else
+#endif
options->ip_qos_bulk = IPTOS_DSCP_CS1;
if (options->request_tty == -1)
options->request_tty = REQUEST_TTY_AUTO;