Merged revisions 291829 via svnmerge from

https://origsvn.digium.com/svn/asterisk/branches/1.8

........
  r291829 | dvossel | 2010-10-14 17:09:32 -0500 (Thu, 14 Oct 2010) | 8 lines
  
  Set TCLASS field of IPv6 header when sip qos options are set.
  
  (closes issue #18099)
  Reported by: jamesnet
  Patches:
        issues_18099_v2.diff uploaded by dvossel (license 671)
  Tested by: dvossel, jamesnet
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@291830 65c4cc65-6c06-0410-ace0-fbb531ad65f3
10-digiumphones
David Vossel 15 years ago
parent 58ea3034ce
commit dc0b76c04c

@ -454,8 +454,17 @@ ssize_t ast_sendto(int sockfd, const void *buf, size_t len, int flags,
int ast_set_qos(int sockfd, int tos, int cos, const char *desc)
{
int res;
int proto_type = IPPROTO_IP; /* ipv4 values by default */
int dscp_field = IP_TOS;
struct ast_sockaddr addr;
if ((res = setsockopt(sockfd, IPPROTO_IP, IP_TOS, &tos, sizeof(tos)))) {
/* if this is IPv6 we need to set the TCLASS instead of TOS */
if (!ast_getsockname(sockfd, &addr) && ast_sockaddr_is_ipv6(&addr)) {
proto_type = IPPROTO_IPV6;
dscp_field = IPV6_TCLASS;
}
if ((res = setsockopt(sockfd, proto_type, dscp_field, &tos, sizeof(tos)))) {
ast_log(LOG_WARNING, "Unable to set %s TOS to %d (may be you have no "
"root privileges): %s\n", desc, tos, strerror(errno));
} else if (tos) {

Loading…
Cancel
Save