diff options
author | Markus Friedl <markus@cvs.openbsd.org> | 2002-12-10 19:26:51 +0000 |
---|---|---|
committer | Markus Friedl <markus@cvs.openbsd.org> | 2002-12-10 19:26:51 +0000 |
commit | 80a92f7797e96a1a71b28218bec96f7cb97f5acf (patch) | |
tree | d1e713fea2a80bfdb79e8fff0466a7275524e488 /usr.bin | |
parent | 92bec6a3d90bec5f60f801c1c59bc74c59fc712e (diff) |
move tos handling to packet_set_tos; ok provos/henning/deraadt
Diffstat (limited to 'usr.bin')
-rw-r--r-- | usr.bin/ssh/packet.c | 43 |
1 files changed, 17 insertions, 26 deletions
diff --git a/usr.bin/ssh/packet.c b/usr.bin/ssh/packet.c index e132a308a70..6782fe7fd2d 100644 --- a/usr.bin/ssh/packet.c +++ b/usr.bin/ssh/packet.c @@ -37,7 +37,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: packet.c,v 1.100 2002/11/21 22:45:31 markus Exp $"); +RCSID("$OpenBSD: packet.c,v 1.101 2002/12/10 19:26:50 markus Exp $"); #include "xmalloc.h" #include "buffer.h" @@ -1309,14 +1309,26 @@ packet_not_very_much_data_to_write(void) return buffer_len(&output) < 128 * 1024; } +void +packet_set_tos(int interactive) +{ + int tos = interactive ? IPTOS_LOWDELAY : IPTOS_THROUGHPUT; + + if (!packet_connection_is_on_socket() || + !packet_connection_is_ipv4()) + return; + if (setsockopt(connection_in, IPPROTO_IP, IP_TOS, &tos, + sizeof(tos)) < 0) + error("setsockopt IP_TOS %d: %.100s:", + tos, strerror(errno)); +} + /* Informs that the current session is interactive. Sets IP flags for that. */ void packet_set_interactive(int interactive) { static int called = 0; - int lowdelay = IPTOS_LOWDELAY; - int throughput = IPTOS_THROUGHPUT; if (called) return; @@ -1328,30 +1340,9 @@ packet_set_interactive(int interactive) /* Only set socket options if using a socket. */ if (!packet_connection_is_on_socket()) return; - /* - * IPTOS_LOWDELAY and IPTOS_THROUGHPUT are IPv4 only - */ - if (interactive) { - /* - * Set IP options for an interactive connection. Use - * IPTOS_LOWDELAY and TCP_NODELAY. - */ - if (packet_connection_is_ipv4()) { - if (setsockopt(connection_in, IPPROTO_IP, IP_TOS, - &lowdelay, sizeof(lowdelay)) < 0) - error("setsockopt IPTOS_LOWDELAY: %.100s", - strerror(errno)); - } + if (interactive) set_nodelay(connection_in); - } else if (packet_connection_is_ipv4()) { - /* - * Set IP options for a non-interactive connection. Use - * IPTOS_THROUGHPUT. - */ - if (setsockopt(connection_in, IPPROTO_IP, IP_TOS, &throughput, - sizeof(throughput)) < 0) - error("setsockopt IPTOS_THROUGHPUT: %.100s", strerror(errno)); - } + packet_set_tos(interactive); } /* Returns true if the current connection is interactive. */ |