blob: b162c0f45cd689d0a32655efc3d0c156ee5b6a59 [file] [log] [blame]
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package packetbuffer
import (
"gvisor.dev/gvisor/pkg/tcpip/buffer"
"gvisor.dev/gvisor/pkg/tcpip/stack"
)
// OutboundToInbound coverts a PacketBuffer that conforms to the
// contract of WritePacket to one that conforms to the contract of
// DeliverNetworkPacket/InjectInbound/etc.
//
// The contract of WritePacket differs from that of DeliverNetworkPacket.
// WritePacket treats Header and Data as disjoint buffers; DeliverNetworkPacket
// expects Data to contain the full packet, including any Header bytes if they
// are present.
func OutboundToInbound(pkt *stack.PacketBuffer) *stack.PacketBuffer {
return &stack.PacketBuffer{
Data: buffer.NewVectorisedView(pkt.Size(), pkt.Views()),
}
}
// Convert pkt to a single View.
func ToView(pkt *stack.PacketBuffer) buffer.View {
vv := buffer.NewVectorisedView(pkt.Size(), pkt.Views())
return vv.ToView()
}