changeset 1858:ed3326f21888

Test for IP_TOS and hardcode DSCP values This allows it to work on macos too
author Matt Johnston <matt@ucc.asn.au>
date Tue, 25 Jan 2022 17:57:05 +0800
parents 6022df862942
children 5001e9c5641f
files netio.c
diffstat 1 files changed, 7 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/netio.c	Tue Jan 25 17:32:20 2022 +0800
+++ b/netio.c	Tue Jan 25 17:57:05 2022 +0800
@@ -374,7 +374,7 @@
 	/* Don't log ENOTSOCK errors so that this can harmlessly be called
 	 * on a client '-J' proxy pipe */
 
-#ifdef IPTOS_DSCP_AF21
+#ifdef IP_TOS
 	/* Set the DSCP field for outbound IP packet priority.
 	rfc4594 has some guidance to meanings.
 
@@ -388,11 +388,14 @@
 
 	Old Dropbear/OpenSSH and Debian/Ubuntu OpenSSH (at Jan 2022) use
 	IPTOS_LOWDELAY/IPTOS_THROUGHPUT
+
+	DSCP constants are from Linux headers, applicable to other platforms
+	such as macos.
 	*/
 	if (prio == DROPBEAR_PRIO_LOWDELAY) {
-		val = IPTOS_DSCP_AF21;
+		val = 0x48; /* IPTOS_DSCP_AF21 */
 	} else if (prio == DROPBEAR_PRIO_BULK) {
-		val = IPTOS_DSCP_AF11;
+		val = 0x28; /* IPTOS_DSCP_AF11; */
 	} else {
 		val = 0; /* default */
 	}
@@ -406,7 +409,7 @@
 	if (rc < 0 && errno != ENOTSOCK) {
 		TRACE(("Couldn't set IP_TOS (%s)", strerror(errno)));
 	}
-#endif
+#endif /* IP_TOS */
 
 #ifdef HAVE_LINUX_PKT_SCHED_H
 	/* Set scheduling priority within the local Linux network stack */