mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 10:47:18 +00:00 
			
		
		
		
	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
This commit is contained in:
		| @@ -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) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user