svn commit: r247945 - stable/8/sys/netinet
Michael Tuexen
tuexen at FreeBSD.org
Thu Mar 7 21:22:08 UTC 2013
Author: tuexen
Date: Thu Mar 7 21:22:07 2013
New Revision: 247945
URL: http://svnweb.freebsd.org/changeset/base/247945
Log:
MFC r236961:
Add a cmsg of type IP_TOS for UDP/IPv4 sockets to specify the TOS byte.
Modified:
stable/8/sys/netinet/udp_usrreq.c
Directory Properties:
stable/8/ (props changed)
stable/8/sys/ (props changed)
stable/8/sys/netinet/ (props changed)
Modified: stable/8/sys/netinet/udp_usrreq.c
==============================================================================
--- stable/8/sys/netinet/udp_usrreq.c Thu Mar 7 21:17:37 2013 (r247944)
+++ stable/8/sys/netinet/udp_usrreq.c Thu Mar 7 21:22:07 2013 (r247945)
@@ -970,6 +970,7 @@ udp_output(struct inpcb *inp, struct mbu
int ipflags;
u_short fport, lport;
int unlock_udbinfo;
+ u_char tos;
/*
* udp_output() may need to temporarily bind or connect the current
@@ -985,6 +986,7 @@ udp_output(struct inpcb *inp, struct mbu
}
src.sin_family = 0;
+ tos = inp->inp_ip_tos;
if (control != NULL) {
/*
* XXX: Currently, we assume all the optional information is
@@ -1022,6 +1024,14 @@ udp_output(struct inpcb *inp, struct mbu
*(struct in_addr *)CMSG_DATA(cm);
break;
+ case IP_TOS:
+ if (cm->cmsg_len != CMSG_LEN(sizeof(u_char))) {
+ error = EINVAL;
+ break;
+ }
+ tos = *(u_char *)CMSG_DATA(cm);
+ break;
+
default:
error = ENOPROTOOPT;
break;
@@ -1239,7 +1249,7 @@ udp_output(struct inpcb *inp, struct mbu
ui->ui_sum = 0;
((struct ip *)ui)->ip_len = sizeof (struct udpiphdr) + len;
((struct ip *)ui)->ip_ttl = inp->inp_ip_ttl; /* XXX */
- ((struct ip *)ui)->ip_tos = inp->inp_ip_tos; /* XXX */
+ ((struct ip *)ui)->ip_tos = tos; /* XXX */
UDPSTAT_INC(udps_opackets);
if (unlock_udbinfo == 2)
More information about the svn-src-stable-8
mailing list