From 2e39dbc9773d4924791ee4e13f8e1edf2e61e27d Mon Sep 17 00:00:00 2001 From: olgeni Date: Mon, 22 Oct 2012 14:29:39 +0200 Subject: [PATCH] Fix calls to setsockopt. On FreeBSD, the socket option length must be declared as an int. While I'm here, translate dscp (0x92) to the appropriate constants. (tested on FreeBSD only so far) --- src/network/network.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/network/network.cc b/src/network/network.cc index d2c9063..d4ce857 100644 --- a/src/network/network.cc +++ b/src/network/network.cc @@ -35,6 +35,7 @@ #include #include #include +#include #include #include #include @@ -157,14 +158,14 @@ Connection::Socket::Socket() #endif /* set diffserv values to AF42 + ECT */ - uint8_t dscp = 0x92; - if ( setsockopt( _fd, IPPROTO_IP, IP_TOS, &dscp, 1) < 0 ) { + int dscp = IPTOS_DSCP_AF42 | IPTOS_ECN_ECT0; + if ( setsockopt( _fd, IPPROTO_IP, IP_TOS, &dscp, sizeof (dscp)) < 0 ) { // perror( "setsockopt( IP_TOS )" ); } /* request explicit congestion notification on received datagrams */ #ifdef HAVE_IP_RECVTOS - char tosflag = true; + int tosflag = true; socklen_t tosoptlen = sizeof( tosflag ); if ( setsockopt( _fd, IPPROTO_IP, IP_RECVTOS, &tosflag, tosoptlen ) < 0 ) { perror( "setsockopt( IP_RECVTOS )" );