From b76e852f59b07354f0851a2feeac4f8ade9b66b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Wed, 27 Aug 2025 20:28:59 +0800 Subject: [PATCH] ping: Fix reject --- stack_system.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/stack_system.go b/stack_system.go index c354bda..f74fef9 100644 --- a/stack_system.go +++ b/stack_system.go @@ -665,7 +665,7 @@ func (s *System) processIPv4ICMP(ipHdr header.IPv4, icmpHdr header.ICMPv4) (bool }) if err != nil { if errors.Is(err, ErrReset) { - return false, s.rejectIPv4WithICMP(ipHdr, header.ICMPv4PortUnreachable) + return false, s.rejectIPv4WithICMP(ipHdr, header.ICMPv4HostUnreachable) } else if errors.Is(err, ErrDrop) { return false, nil } @@ -712,7 +712,7 @@ func (s *System) rejectIPv4WithICMP(ipHdr header.IPv4, code header.ICMPv4Code) e icmpHdr := header.ICMPv4(newIPHdr.Payload()) icmpHdr.SetType(header.ICMPv4DstUnreachable) icmpHdr.SetCode(code) - icmpHdr.SetChecksum(header.ICMPv4Checksum(icmpHdr, 0)) + icmpHdr.SetChecksum(header.ICMPv4Checksum(icmpHdr[:header.ICMPv4MinimumSize], checksum.Checksum(ipHdr.Payload(), 0))) copy(icmpHdr.Payload(), payload) if PacketOffset > 0 { newPacket.ExtendHeader(PacketOffset)[3] = syscall.AF_INET @@ -739,7 +739,7 @@ func (s *System) processIPv6ICMP(ipHdr header.IPv6, icmpHdr header.ICMPv6) (bool ) }) if errors.Is(err, ErrReset) { - return false, s.rejectIPv6WithICMP(ipHdr, header.ICMPv6PortUnreachable) + return false, s.rejectIPv6WithICMP(ipHdr, header.ICMPv6AddressUnreachable) } else if errors.Is(err, ErrDrop) { return false, nil }