mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
Add a unit test for out of order IP reassembly
PiperOrigin-RevId: 327042869
This commit is contained in:
@@ -627,6 +627,28 @@ func TestReceiveFragments(t *testing.T) {
|
||||
},
|
||||
expectedPayloads: [][]byte{udpPayload1Addr1ToAddr2},
|
||||
},
|
||||
{
|
||||
name: "Two fragments out of order",
|
||||
fragments: []fragmentData{
|
||||
{
|
||||
srcAddr: addr1,
|
||||
dstAddr: addr2,
|
||||
id: 1,
|
||||
flags: 0,
|
||||
fragmentOffset: 64,
|
||||
payload: ipv4Payload1Addr1ToAddr2[64:],
|
||||
},
|
||||
{
|
||||
srcAddr: addr1,
|
||||
dstAddr: addr2,
|
||||
id: 1,
|
||||
flags: header.IPv4FlagMoreFragments,
|
||||
fragmentOffset: 0,
|
||||
payload: ipv4Payload1Addr1ToAddr2[:64],
|
||||
},
|
||||
},
|
||||
expectedPayloads: [][]byte{udpPayload1Addr1ToAddr2},
|
||||
},
|
||||
{
|
||||
name: "Two fragments with last fragment size not a multiple of fragment block size",
|
||||
fragments: []fragmentData{
|
||||
|
||||
@@ -827,6 +827,44 @@ func TestReceiveIPv6Fragments(t *testing.T) {
|
||||
},
|
||||
expectedPayloads: [][]byte{udpPayload1Addr1ToAddr2},
|
||||
},
|
||||
{
|
||||
name: "Two fragments out of order",
|
||||
fragments: []fragmentData{
|
||||
{
|
||||
srcAddr: addr1,
|
||||
dstAddr: addr2,
|
||||
nextHdr: fragmentExtHdrID,
|
||||
data: buffer.NewVectorisedView(
|
||||
fragmentExtHdrLen+len(ipv6Payload1Addr1ToAddr2)-64,
|
||||
[]buffer.View{
|
||||
// Fragment extension header.
|
||||
//
|
||||
// Fragment offset = 8, More = false, ID = 1
|
||||
buffer.View([]byte{uint8(header.UDPProtocolNumber), 0, 0, 64, 0, 0, 0, 1}),
|
||||
|
||||
ipv6Payload1Addr1ToAddr2[64:],
|
||||
},
|
||||
),
|
||||
},
|
||||
{
|
||||
srcAddr: addr1,
|
||||
dstAddr: addr2,
|
||||
nextHdr: fragmentExtHdrID,
|
||||
data: buffer.NewVectorisedView(
|
||||
fragmentExtHdrLen+64,
|
||||
[]buffer.View{
|
||||
// Fragment extension header.
|
||||
//
|
||||
// Fragment offset = 0, More = true, ID = 1
|
||||
buffer.View([]byte{uint8(header.UDPProtocolNumber), 0, 0, 1, 0, 0, 0, 1}),
|
||||
|
||||
ipv6Payload1Addr1ToAddr2[:64],
|
||||
},
|
||||
),
|
||||
},
|
||||
},
|
||||
expectedPayloads: [][]byte{udpPayload1Addr1ToAddr2},
|
||||
},
|
||||
{
|
||||
name: "Two fragments with last fragment size not a multiple of fragment block size",
|
||||
fragments: []fragmentData{
|
||||
|
||||
Reference in New Issue
Block a user