Here's an incremental. --- lib/socket-util.c | 14 +++++++++++--- lib/socket-util.h | 2 +- 2 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/lib/socket-util.c b/lib/socket-util.c index ca37a54..a9b3b1a 100644 --- a/lib/socket-util.c +++ b/lib/socket-util.c @@ -85,11 +85,15 @@ set_nonblocking(int fd) static int set_dscp(int fd, uint8_t dscp) { - assert(dscp <= 63); + if (dscp > 63) { + return EINVAL; + } + dscp = dscp << 2; if (setsockopt(fd, IPPROTO_IP, IP_TOS, &dscp, sizeof dscp)) { return errno; } + return 0; } @@ -558,7 +562,9 @@ exit: * If 'sinp' is non-null, then on success the target address is stored into * '*sinp'. * - * 'dscp' becomes the DSCP bits in the IP headers for the new connection. */ + * 'dscp' becomes the DSCP bits in the IP headers for the new connection. It + * should be in the range [0, 63] and will automatically be shifted to the + * appropriately place in the IP tos field. */ int inet_open_active(int style, const char *target, uint16_t default_port, struct sockaddr_in *sinp, int *fdp, uint8_t dscp) @@ -681,7 +687,9 @@ exit: * If 'sinp' is non-null, then on success the bound address is stored into * '*sinp'. * - * 'dscp' becomes the DSCP bits in the IP headers for the new connection. */ + * 'dscp' becomes the DSCP bits in the IP headers for the new connection. It + * should be in the range [0, 63] and will automatically be shifted to the + * appropriately place in the IP tos field. */ int inet_open_passive(int style, const char *target, int default_port, struct sockaddr_in *sinp, uint8_t dscp) diff --git a/lib/socket-util.h b/lib/socket-util.h index a2fa71b..8ea40d5 100644 --- a/lib/socket-util.h +++ b/lib/socket-util.h @@ -67,6 +67,6 @@ char *describe_fd(int fd); /* Default value of dscp bits for connection between controller and manager. * Value of IPTOS_PREC_INTERNETCONTROL = 0xc0 which is defined * in <netinet/ip.h> is used. */ -#define DSCP_DEFAULT IPTOS_PREC_INTERNETCONTROL >> 2 +#define DSCP_DEFAULT (IPTOS_PREC_INTERNETCONTROL >> 2) #endif /* socket-util.h */ -- 1.7.9.6 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev