Page MenuHomeFreeBSD

D19960.id56357.diff
No OneTemporary

D19960.id56357.diff

Index: sys/netinet6/ip6_input.c
===================================================================
--- sys/netinet6/ip6_input.c
+++ sys/netinet6/ip6_input.c
@@ -421,8 +421,8 @@
/*
* if the payload length field is 0 and the next header field indicates
- * Hop-by-Hop Options header, then this must be a Jumbo Payload We do
- * not support Jumbograms, report an error to the sender.
+ * Hop-by-Hop Options header, then this must be a jumbo payload. We do
+ * not support jumbo payloads, report an error to the sender.
*/
if (ip6->ip6_plen == 0) {
IP6STAT_INC(ip6s_badoptions);
@@ -845,7 +845,6 @@
/*
* Process Hop-by-Hop options header if it's contained.
* m may be modified in ip6_hopopts_input().
- * If a JumboPayload option is included, plen will also be modified.
*/
plen = (u_int32_t)ntohs(ip6->ip6_plen);
if (ip6->ip6_nxt == IPPROTO_HOPOPTS) {
@@ -963,7 +962,7 @@
}
/*
- * Hop-by-Hop options header processing. If a Jumbo payload option is present
+ * Hop-by-Hop options header processing. If a jumbo payload option is present
* report an error.
*
* rtalertp - XXX: should be stored more smart way
@@ -1059,7 +1058,7 @@
*rtalertp = ntohs(rtalert_val);
break;
case IP6OPT_JUMBO:
- /* We do not support the Jumbo gram option */
+ /* We do not support the jumbo payload option */
goto bad;
default: /* unknown option */
if (hbhlen < IP6OPT_MINLEN) {
@@ -1383,7 +1382,6 @@
return;
}
#endif
-
/*
* XXX: We copy the whole header even if a
* jumbo payload option is included, the option which
Index: sys/netinet6/ip6_output.c
===================================================================
--- sys/netinet6/ip6_output.c
+++ sys/netinet6/ip6_output.c
@@ -399,6 +399,7 @@
plen = m->m_pkthdr.len - sizeof(*ip6);
if (plen > IPV6_MAXPACKET) {
+ error = EMSGSIZE;
goto freehdrs;
} else
ip6->ip6_plen = htons(plen);
Index: sys/netinet6/udp6_usrreq.c
===================================================================
--- sys/netinet6/udp6_usrreq.c
+++ sys/netinet6/udp6_usrreq.c
@@ -886,12 +886,9 @@
plen = sizeof(struct udphdr) + ulen;
hlen = sizeof(struct ip6_hdr);
- //TODO this doesn't work
if (plen > IPV6_MAXPACKET) {
- if (control)
- m_freem(control);
- m_freem(m);
- return (EMSGSIZE);
+ error = EMSGSIZE;
+ goto release;
}
/*
@@ -924,7 +921,7 @@
* the entire UDPLite packet is covered by the checksum.
*/
cscov_partial = (cscov == 0) ? 0 : 1;
- } else if (plen <= 0xffff)
+ } else
udp6->uh_ulen = htons((u_short)plen);
udp6->uh_sum = 0;

File Metadata

Mime Type
text/plain
Expires
Tue, Jun 23, 6:06 PM (9 h, 16 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
34255579
Default Alt Text
D19960.id56357.diff (2 KB)

Event Timeline