svn commit: r237911 - stable/9/sys/netinet
Michael Tuexen
tuexen at FreeBSD.org
Sun Jul 1 08:53:56 UTC 2012
Author: tuexen
Date: Sun Jul 1 08:53:55 2012
New Revision: 237911
URL: http://svn.freebsd.org/changeset/base/237911
Log:
MFC r236961:
Add a cmsg of type IP_TOS for UDP/IPv4 sockets to specify the TOS byte.
Modified:
stable/9/sys/netinet/udp_usrreq.c
Directory Properties:
stable/9/sys/ (props changed)
Modified: stable/9/sys/netinet/udp_usrreq.c
==============================================================================
--- stable/9/sys/netinet/udp_usrreq.c Sun Jul 1 08:47:15 2012 (r237910)
+++ stable/9/sys/netinet/udp_usrreq.c Sun Jul 1 08:53:55 2012 (r237911)
@@ -956,6 +956,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
@@ -971,6 +972,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
@@ -1008,6 +1010,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;
@@ -1223,7 +1233,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 == UH_WLOCKED)
More information about the svn-src-stable-9
mailing list