summaryrefslogtreecommitdiff
path: root/networking/traceroute.c
diff options
context:
space:
mode:
Diffstat (limited to 'networking/traceroute.c')
-rw-r--r--networking/traceroute.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/networking/traceroute.c b/networking/traceroute.c
index 057f859..4bbe1ab 100644
--- a/networking/traceroute.c
+++ b/networking/traceroute.c
@@ -713,11 +713,16 @@ packet4_ok(int read_len, int seq)
up = (struct udphdr *)((char *)hip + hlen);
if (hlen + 12 <= read_len
&& hip->ip_p == IPPROTO_UDP
-// Off: since we do not form the entire IP packet,
+#if !defined(__FreeBSD__)
+// Disabled source check: since we do not form the entire IP packet,
// but defer it to kernel, we can't set source port,
// and thus can't check it here in the reply
+ /* && up->source == ident */
+ && up->dest == htons(port + seq)
+#else
/* && up->uh_sport == ident */
&& up->uh_dport == htons(port + seq)
+#endif
) {
return (type == ICMP_TIMXCEED ? -1 : code + 1);
}