Skip to content

Commit b76e852

Browse files
committed
ping: Fix reject
1 parent d5865f2 commit b76e852

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

stack_system.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -665,7 +665,7 @@ func (s *System) processIPv4ICMP(ipHdr header.IPv4, icmpHdr header.ICMPv4) (bool
665665
})
666666
if err != nil {
667667
if errors.Is(err, ErrReset) {
668-
return false, s.rejectIPv4WithICMP(ipHdr, header.ICMPv4PortUnreachable)
668+
return false, s.rejectIPv4WithICMP(ipHdr, header.ICMPv4HostUnreachable)
669669
} else if errors.Is(err, ErrDrop) {
670670
return false, nil
671671
}
@@ -712,7 +712,7 @@ func (s *System) rejectIPv4WithICMP(ipHdr header.IPv4, code header.ICMPv4Code) e
712712
icmpHdr := header.ICMPv4(newIPHdr.Payload())
713713
icmpHdr.SetType(header.ICMPv4DstUnreachable)
714714
icmpHdr.SetCode(code)
715-
icmpHdr.SetChecksum(header.ICMPv4Checksum(icmpHdr, 0))
715+
icmpHdr.SetChecksum(header.ICMPv4Checksum(icmpHdr[:header.ICMPv4MinimumSize], checksum.Checksum(ipHdr.Payload(), 0)))
716716
copy(icmpHdr.Payload(), payload)
717717
if PacketOffset > 0 {
718718
newPacket.ExtendHeader(PacketOffset)[3] = syscall.AF_INET
@@ -739,7 +739,7 @@ func (s *System) processIPv6ICMP(ipHdr header.IPv6, icmpHdr header.ICMPv6) (bool
739739
)
740740
})
741741
if errors.Is(err, ErrReset) {
742-
return false, s.rejectIPv6WithICMP(ipHdr, header.ICMPv6PortUnreachable)
742+
return false, s.rejectIPv6WithICMP(ipHdr, header.ICMPv6AddressUnreachable)
743743
} else if errors.Is(err, ErrDrop) {
744744
return false, nil
745745
}

0 commit comments

Comments
 (0)