diff options
author | Ting-Yu Wang <anivia@google.com> | 2021-01-29 17:35:27 -0800 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2021-01-29 17:37:29 -0800 |
commit | 825c185dc56251bd330124ef773c6653e3887579 (patch) | |
tree | c059718acc0418795dc444184e08cbea19f7fc80 /pkg/tcpip/network/ipv4/ipv4.go | |
parent | 45fe9fe9c6fa92954a5017b98835eac5fd8d3987 (diff) |
Make fragmentation return a reassembled PacketBuffer
This allows later decoupling of the backing network buffer implementation.
PiperOrigin-RevId: 354643297
Diffstat (limited to 'pkg/tcpip/network/ipv4/ipv4.go')
-rw-r--r-- | pkg/tcpip/network/ipv4/ipv4.go | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/pkg/tcpip/network/ipv4/ipv4.go b/pkg/tcpip/network/ipv4/ipv4.go index b0703715a..04c6a6708 100644 --- a/pkg/tcpip/network/ipv4/ipv4.go +++ b/pkg/tcpip/network/ipv4/ipv4.go @@ -740,7 +740,7 @@ func (e *endpoint) handlePacket(pkt *stack.PacketBuffer) { } proto := h.Protocol() - data, _, ready, err := e.protocol.fragmentation.Process( + resPkt, _, ready, err := e.protocol.fragmentation.Process( // As per RFC 791 section 2.3, the identification value is unique // for a source-destination pair and protocol. fragmentation.FragmentID{ @@ -763,7 +763,8 @@ func (e *endpoint) handlePacket(pkt *stack.PacketBuffer) { if !ready { return } - pkt.Data = data + pkt = resPkt + h = header.IPv4(pkt.NetworkHeader().View()) // The reassembler doesn't take care of fixing up the header, so we need // to do it here. |