diff options
author | gVisor bot <gvisor-bot@google.com> | 2020-11-16 21:09:53 +0000 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2020-11-16 21:09:53 +0000 |
commit | 3765559c4bb8b93fab9f8f7d2e3c217e2f0f94ae (patch) | |
tree | ce22b20bfb5cb5f6a9ed647af197a7b1e53b8f1b /pkg/tcpip/network/ipv4/icmp.go | |
parent | bfdacda529756f7229cdce6d824bd0ac9819076d (diff) | |
parent | 758e45618f3d663a092b31baf29f24b3e4dc4d54 (diff) |
Merge release-20201109.0-49-g758e45618 (automated)
Diffstat (limited to 'pkg/tcpip/network/ipv4/icmp.go')
-rw-r--r-- | pkg/tcpip/network/ipv4/icmp.go | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/pkg/tcpip/network/ipv4/icmp.go b/pkg/tcpip/network/ipv4/icmp.go index 204b182e6..488945226 100644 --- a/pkg/tcpip/network/ipv4/icmp.go +++ b/pkg/tcpip/network/ipv4/icmp.go @@ -514,3 +514,18 @@ func (p *protocol) returnError(reason icmpReason, pkt *stack.PacketBuffer) *tcpi counter.Increment() return nil } + +// OnReassemblyTimeout implements fragmentation.TimeoutHandler. +func (p *protocol) OnReassemblyTimeout(pkt *stack.PacketBuffer) { + // OnReassemblyTimeout sends a Time Exceeded Message, as per RFC 792: + // + // If a host reassembling a fragmented datagram cannot complete the + // reassembly due to missing fragments within its time limit it discards the + // datagram, and it may send a time exceeded message. + // + // If fragment zero is not available then no time exceeded need be sent at + // all. + if pkt != nil { + p.returnError(&icmpReasonReassemblyTimeout{}, pkt) + } +} |