Hi, I noticed that the Type of Service bit for minimize delay is set in client->server packets only. Is this OS-specific or is there another reason for this? Here is a tcpdump of an interactive connection: 217.225.98.212.22 > 134.169.34.19.45870: P 1:49(48) ack 48 win 12008 (DF) 134.169.34.19.45870 > 217.225.98.212.22: P 48:96(48) ack 49 win 25416 (DF) [tos 0x10] 217.225.98.212.22 > 134.169.34.19.45870: P 49:97(48) ack 96 win 12008 (DF) 134.169.34.19.45870 > 217.225.98.212.22: P 96:144(48) ack 49 win 25416 (DF) [tos 0x10] 217.225.98.212.22 > 134.169.34.19.45870: P 97:145(48) ack 144 win 12008 (DF) 134.169.34.19.45870 > 217.225.98.212.22: . 144:144(0) ack 145 win 25416 (DF) [tos 0x10] 134.169.34.19.45870 > 217.225.98.212.22: P 144:192(48) ack 145 win 25416 (DF) [tos 0x10] 217.225.98.212.22 > 134.169.34.19.45870: P 145:193(48) ack 192 win 12008 (DF) 134.169.34.19.45870 > 217.225.98.212.22: P 192:240(48) ack 193 win 25416 (DF) [tos 0x10] 217.225.98.212.22 > 134.169.34.19.45870: P 193:241(48) ack 240 win 12008 (DF) 134.169.34.19.45870 > 217.225.98.212.22: P 240:288(48) ack 241 win 25416 (DF) [tos 0x10] I'm using the ToS field for priority queuing, so this is a problem for me. oliver at stargate:~ > uname -rs ; ssh -V Linux 2.4.17-lvm OpenSSH_3.1p1, SSH protocols 1.5/2.0, OpenSSL 0x0090602f Oliver
In article <20020319131547.GB18652 at faui02> you wrote:> openssh sets TOS for packet_connection_is_ipv4() onlyI made a patch which solves my ToS issue. However, I do not use Kerberos which also uses packet_connection_is_ipv4(), so if anyone can test it I would like to hear about it. --- openssh-3.1p1/packet.c Tue Mar 5 02:31:29 2002 +++ openssh-3.1p1-v4inv6-ToS/packet.c Thu Mar 21 13:43:01 2002 @@ -178,13 +178,24 @@ { struct sockaddr_storage to; socklen_t tolen = sizeof(to); + struct sockaddr_in6 *to6; memset(&to, 0, sizeof(to)); if (getsockname(connection_out, (struct sockaddr *)&to, &tolen) < 0) return 0; - if (to.ss_family != AF_INET) + switch (to.ss_family) { + case AF_INET: + return 1; +#ifdef IPV4_IN_IPV6 + case AF_INET6: + to6 = (struct sockaddr_in6 *)&to; + if (IN6_IS_ADDR_V4MAPPED(&to6->sin6_addr)) + return 1; return 0; - return 1; +#endif + default: + return 0; + } } /* Sets the connection into non-blocking mode. */