Page MenuHomeFreeBSD

D21086.id60194.diff
No OneTemporary

D21086.id60194.diff

Index: sys/netpfil/pf/pf.c
===================================================================
--- sys/netpfil/pf/pf.c
+++ sys/netpfil/pf/pf.c
@@ -6368,9 +6368,8 @@
m = *m0; /* pf_normalize messes with m0 */
h = mtod(m, struct ip6_hdr *);
-#if 1
/*
- * we do not support jumbogram yet. if we keep going, zero ip6_plen
+ * we do not support jumbogram. if we keep going, zero ip6_plen
* will do something bad, so drop the packet for now.
*/
if (htons(h->ip6_plen) == 0) {
@@ -6378,7 +6377,6 @@
REASON_SET(&reason, PFRES_NORM); /*XXX*/
goto done;
}
-#endif
pd.src = (struct pf_addr *)&h->ip6_src;
pd.dst = (struct pf_addr *)&h->ip6_dst;
Index: sys/netpfil/pf/pf_norm.c
===================================================================
--- sys/netpfil/pf/pf_norm.c
+++ sys/netpfil/pf/pf_norm.c
@@ -1185,6 +1185,11 @@
if (sizeof(struct ip6_hdr) + IPV6_MAXPACKET < m->m_pkthdr.len)
goto drop;
+ plen = ntohs(h->ip6_plen);
+ /* jumbo payload option not supported */
+ if (plen == 0)
+ goto drop;
+
extoff = 0;
off = sizeof(struct ip6_hdr);
proto = h->ip6_nxt;
@@ -1260,13 +1265,6 @@
}
} while (!terminal);
- /* jumbo payload option must be present, or plen > 0 */
- if (ntohs(h->ip6_plen) == 0)
- plen = jumbolen;
- else
- plen = ntohs(h->ip6_plen);
- if (plen == 0)
- goto drop;
if (sizeof(struct ip6_hdr) + plen > m->m_pkthdr.len)
goto shortpkt;
@@ -1275,10 +1273,6 @@
return (PF_PASS);
fragment:
- /* Jumbo payload packets cannot be fragmented. */
- plen = ntohs(h->ip6_plen);
- if (plen == 0 || jumbolen)
- goto drop;
if (sizeof(struct ip6_hdr) + plen > m->m_pkthdr.len)
goto shortpkt;

File Metadata

Mime Type
text/plain
Expires
Thu, Apr 9, 4:39 PM (13 h, 43 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31165033
Default Alt Text
D21086.id60194.diff (1 KB)

Event Timeline