Merge release-20201005.0-95-gdffa4c669 (automated)
This commit is contained in:
commit
55f093bcb3
|
@ -23,7 +23,6 @@ import (
|
|||
"gvisor.dev/gvisor/pkg/sleep"
|
||||
"gvisor.dev/gvisor/pkg/sync"
|
||||
"gvisor.dev/gvisor/pkg/tcpip"
|
||||
"gvisor.dev/gvisor/pkg/tcpip/buffer"
|
||||
"gvisor.dev/gvisor/pkg/tcpip/header"
|
||||
)
|
||||
|
||||
|
@ -686,7 +685,9 @@ func (n *NIC) DeliverNetworkPacket(remote, local tcpip.LinkAddress, protocol tcp
|
|||
// packet to forward.
|
||||
fwdPkt := NewPacketBuffer(PacketBufferOptions{
|
||||
ReserveHeaderBytes: int(n.LinkEndpoint.MaxHeaderLength()),
|
||||
Data: buffer.NewVectorisedView(pkt.Size(), pkt.Views()),
|
||||
// We need to do a deep copy of the IP packet because WritePacket (and
|
||||
// friends) take ownership of the packet buffer, but we do not own it.
|
||||
Data: PayloadSince(pkt.NetworkHeader()).ToVectorisedView(),
|
||||
})
|
||||
|
||||
// TODO(b/143425874) Decrease the TTL field in forwarded packets.
|
||||
|
|
|
@ -311,11 +311,25 @@ func (h PacketHeader) Consume(size int) (v buffer.View, consumed bool) {
|
|||
}
|
||||
|
||||
// PayloadSince returns packet payload starting from and including a particular
|
||||
// header. This method isn't optimized and should be used in test only.
|
||||
// header.
|
||||
//
|
||||
// The returned View is owned by the caller - its backing buffer is separate
|
||||
// from the packet header's underlying packet buffer.
|
||||
func PayloadSince(h PacketHeader) buffer.View {
|
||||
var v buffer.View
|
||||
size := h.pk.Data.Size()
|
||||
for _, hinfo := range h.pk.headers[h.typ:] {
|
||||
size += len(hinfo.buf)
|
||||
}
|
||||
|
||||
v := make(buffer.View, 0, size)
|
||||
|
||||
for _, hinfo := range h.pk.headers[h.typ:] {
|
||||
v = append(v, hinfo.buf...)
|
||||
}
|
||||
return append(v, h.pk.Data.ToView()...)
|
||||
|
||||
for _, view := range h.pk.Data.Views() {
|
||||
v = append(v, view...)
|
||||
}
|
||||
|
||||
return v
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue