@@ -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