From eb0cb3161f52bfb8360e48af6a869ba3a5f06add Mon Sep 17 00:00:00 2001 From: Ed Maste Date: Mon, 30 Jul 2012 15:29:40 -0700 Subject: [PATCH] Use int type for setsockopt IP_TOS value FreeBSD requires that setsockopt(..., IP_TOS, ...) be passed an int value. Linux accepts either int or char types (and has since at least kernel 2.6.12) so just use int type unconditionally. Signed-off-by: Ed Maste Signed-off-by: Ben Pfaff --- lib/socket-util.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/socket-util.c b/lib/socket-util.c index 2c5e6ccbe..314761d38 100644 --- a/lib/socket-util.c +++ b/lib/socket-util.c @@ -94,12 +94,14 @@ xset_nonblocking(int fd) static int set_dscp(int fd, uint8_t dscp) { + int val; + if (dscp > 63) { return EINVAL; } - dscp = dscp << 2; - if (setsockopt(fd, IPPROTO_IP, IP_TOS, &dscp, sizeof dscp)) { + val = dscp << 2; + if (setsockopt(fd, IPPROTO_IP, IP_TOS, &val, sizeof val)) { return errno; } -- 2.43.0