From be6f856840979cbeb43fb1f3364e5131aae395c1 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sat, 3 Feb 2024 16:06:31 -0600 Subject: [PATCH] Fix DSCP tagging for dual-stack sockets on Linux --- src/platform/linux/misc.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/platform/linux/misc.cpp b/src/platform/linux/misc.cpp index 7bd38d6d..6cfa9e49 100644 --- a/src/platform/linux/misc.cpp +++ b/src/platform/linux/misc.cpp @@ -628,7 +628,10 @@ namespace platf { if (dscp_tagging) { int level; int option; - if (address.is_v6()) { + + // With dual-stack sockets, Linux uses IPV6_TCLASS for IPv6 traffic + // and IP_TOS for IPv4 traffic. + if (address.is_v6() && !address.to_v6().is_v4_mapped()) { level = SOL_IPV6; option = IPV6_TCLASS; }