X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=python%2Fovs%2Fsocket_util.py;fp=python%2Fovs%2Fsocket_util.py;h=8d34b71635044739ca7ffc93ac4b0115af083f78;hb=92ae5930c220d5994b691346526bde548ea97765;hp=be9fc95a0c9db8bdb006198b5aa9b142d547f135;hpb=9a9808d7955b4cf50b6aac34101a68d76b173d63;p=sliver-openvswitch.git diff --git a/python/ovs/socket_util.py b/python/ovs/socket_util.py index be9fc95a0..8d34b7163 100644 --- a/python/ovs/socket_util.py +++ b/python/ovs/socket_util.py @@ -295,5 +295,18 @@ def set_nonblocking(sock): def set_dscp(sock, dscp): if dscp > 63: raise ValueError("Invalid dscp %d" % dscp) + + # Note: this function is used for both of IPv4 and IPv6 sockets + success = False val = dscp << 2 - sock.setsockopt(socket.IPPROTO_IP, socket.IP_TOS, val) + try: + sock.setsockopt(socket.IPPROTO_IP, socket.IP_TOS, val) + except socket.error, e: + if e.errno != errno.ENOPROTOOPT: + raise + success = True + try: + sock.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_TCLASS, val) + except socket.error, e: + if e.errno != errno.ENOPROTOOPT or not success: + raise