Page MenuHomeFreeBSD

D57091.diff
No OneTemporary

D57091.diff

diff --git a/sys/netpfil/ipfw/ip_fw_nat.c b/sys/netpfil/ipfw/ip_fw_nat.c
--- a/sys/netpfil/ipfw/ip_fw_nat.c
+++ b/sys/netpfil/ipfw/ip_fw_nat.c
@@ -311,17 +311,17 @@
/*
* XXX - Libalias checksum offload 'duct tape':
*
- * locally generated packets have only pseudo-header checksum
- * calculated and libalias will break it[1], so mark them for
- * later fix. Moreover there are cases when libalias modifies
+ * When checksum offloading is used, packets contain only the
+ * pseudo-header checksum and libalias will break it[1], so mark them
+ * for later fix. Moreover there are cases when libalias modifies
* tcp packet data[2], mark them for later fix too.
*
* [1] libalias was never meant to run in kernel, so it does
* not have any knowledge about checksum offloading, and
* expects a packet with a full internet checksum.
- * Unfortunately, packets generated locally will have just the
- * pseudo header calculated, and when libalias tries to adjust
- * the checksum it will actually compute a wrong value.
+ * Unfortunately, when checksum offloading is used, packets will
+ * contain just the pseudo-header checksum, and when libalias tries to
+ * adjust the checksum it will actually compute a wrong value.
*
* [2] when libalias modifies tcp's data content, full TCP
* checksum has to be recomputed: the problem is that
@@ -340,8 +340,7 @@
* it can handle delayed checksum and tso)
*/
- if (mcl->m_pkthdr.rcvif == NULL &&
- mcl->m_pkthdr.csum_flags & CSUM_DELAY_DATA)
+ if (mcl->m_pkthdr.csum_flags & CSUM_DELAY_DATA)
ldt = 1;
c = mtod(mcl, char *);

File Metadata

Mime Type
text/plain
Expires
Fri, May 22, 10:49 AM (5 h, 50 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33347565
Default Alt Text
D57091.diff (1 KB)

Event Timeline