icmp echo patch

Rein Klazes rklazes at xs4all.nl
Tue Jan 15 11:55:06 CST 2002


hi,

This probably falls under "bug for bug" compatibility:
"wine tracert" fails behind a Linux 2.2 masquerading firewall
(ipchains). This is because the received time-exceeded packet does not
contain the checksum of the original echo request but that of the
masqueraded package. Tracert in windows has no problem with that.

	dlls/icmp	: icmp_main.c
	Don't check the checksum of the original echo request 
	packet in the received reply packet. 

Rein.
-- 
Rein Klazes
rklazes at xs4all.nl
-------------- next part --------------
--- wine/dlls/icmp/icmp_main.c	Tue Aug 28 20:39:03 2001
+++ mywine/dlls/icmp/icmp_main.c	Tue Jan 15 18:24:06 2002
@@ -427,8 +427,10 @@
                     } else if ((rep_icmp_header->icmp_type!=ICMP_ECHO) ||
                         (rep_icmp_header->icmp_code!=0) ||
                         (rep_icmp_header->icmp_id!=id) ||
-                        (rep_icmp_header->icmp_seq!=seq) ||
-                        (rep_icmp_header->icmp_cksum!=cksum)) {
+                        /* windows doesn't check this checksum, else tracert */
+                        /* behind a Linux 2.2 masquerading firewall would fail*/
+                        /* (rep_icmp_header->icmp_cksum!=cksum) || */
+                        (rep_icmp_header->icmp_seq!=seq)) {
                         /* This was not a reply to one of our packets after all */
                         TRACE("skipping type,code=%d,%d id,seq=%d,%d cksum=%d\n",
                             rep_icmp_header->icmp_type,rep_icmp_header->icmp_code,


More information about the wine-patches mailing list