@@ -286,11 +286,11 @@ func Fuzz_handleGRO(f *testing.F) {
286
286
pkt9 := udp6Packet (ip6PortA , ip6PortB , 100 )
287
287
pkt10 := udp6Packet (ip6PortA , ip6PortB , 100 )
288
288
pkt11 := udp6Packet (ip6PortA , ip6PortC , 100 )
289
- f .Add (pkt0 , pkt1 , pkt2 , pkt3 , pkt4 , pkt5 , pkt6 , pkt7 , pkt8 , pkt9 , pkt10 , pkt11 , true , offset )
290
- f .Fuzz (func (t * testing.T , pkt0 , pkt1 , pkt2 , pkt3 , pkt4 , pkt5 , pkt6 , pkt7 , pkt8 , pkt9 , pkt10 , pkt11 []byte , canUDPGRO bool , offset int ) {
289
+ f .Add (pkt0 , pkt1 , pkt2 , pkt3 , pkt4 , pkt5 , pkt6 , pkt7 , pkt8 , pkt9 , pkt10 , pkt11 , 0 , offset )
290
+ f .Fuzz (func (t * testing.T , pkt0 , pkt1 , pkt2 , pkt3 , pkt4 , pkt5 , pkt6 , pkt7 , pkt8 , pkt9 , pkt10 , pkt11 []byte , gro int , offset int ) {
291
291
pkts := [][]byte {pkt0 , pkt1 , pkt2 , pkt3 , pkt4 , pkt5 , pkt6 , pkt7 , pkt8 , pkt9 , pkt10 , pkt11 }
292
292
toWrite := make ([]int , 0 , len (pkts ))
293
- handleGRO (pkts , offset , newTCPGROTable (), newUDPGROTable (), canUDPGRO , & toWrite )
293
+ handleGRO (pkts , offset , newTCPGROTable (), newUDPGROTable (), groDisablementFlags ( gro ) , & toWrite )
294
294
if len (toWrite ) > len (pkts ) {
295
295
t .Errorf ("len(toWrite): %d > len(pkts): %d" , len (toWrite ), len (pkts ))
296
296
}
@@ -311,7 +311,7 @@ func Test_handleGRO(t *testing.T) {
311
311
tests := []struct {
312
312
name string
313
313
pktsIn [][]byte
314
- canUDPGRO bool
314
+ gro groDisablementFlags
315
315
wantToWrite []int
316
316
wantLens []int
317
317
wantErr bool
@@ -331,7 +331,7 @@ func Test_handleGRO(t *testing.T) {
331
331
udp6Packet (ip6PortA , ip6PortB , 100 ), // udp6 flow 1
332
332
udp6Packet (ip6PortA , ip6PortB , 100 ), // udp6 flow 1
333
333
},
334
- true ,
334
+ 0 ,
335
335
[]int {0 , 1 , 2 , 4 , 5 , 7 , 9 },
336
336
[]int {240 , 228 , 128 , 140 , 260 , 160 , 248 },
337
337
false ,
@@ -351,7 +351,7 @@ func Test_handleGRO(t *testing.T) {
351
351
udp6Packet (ip6PortA , ip6PortB , 100 ), // udp6 flow 1
352
352
udp6Packet (ip6PortA , ip6PortB , 100 ), // udp6 flow 1
353
353
},
354
- false ,
354
+ udpGRODisabled ,
355
355
[]int {0 , 1 , 2 , 4 , 5 , 7 , 8 , 9 , 10 },
356
356
[]int {240 , 128 , 128 , 140 , 260 , 160 , 128 , 148 , 148 },
357
357
false ,
@@ -368,7 +368,7 @@ func Test_handleGRO(t *testing.T) {
368
368
tcp6Packet (ip6PortA , ip6PortB , header .TCPFlagAck , 100 , 201 ), // v6 flow 1
369
369
tcp6Packet (ip6PortA , ip6PortB , header .TCPFlagAck , 100 , 301 ), // v6 flow 1
370
370
},
371
- true ,
371
+ 0 ,
372
372
[]int {0 , 2 , 4 , 6 },
373
373
[]int {240 , 240 , 260 , 260 },
374
374
false ,
@@ -383,7 +383,7 @@ func Test_handleGRO(t *testing.T) {
383
383
udp4Packet (ip4PortA , ip4PortB , 100 ),
384
384
udp4Packet (ip4PortA , ip4PortB , 100 ),
385
385
},
386
- true ,
386
+ 0 ,
387
387
[]int {0 , 1 , 3 , 4 },
388
388
[]int {140 , 240 , 128 , 228 },
389
389
false ,
@@ -395,7 +395,7 @@ func Test_handleGRO(t *testing.T) {
395
395
tcp4Packet (ip4PortA , ip4PortB , header .TCPFlagAck , 100 , 1 ), // v4 flow 1 seq 1 len 100
396
396
tcp4Packet (ip4PortA , ip4PortB , header .TCPFlagAck , 100 , 201 ), // v4 flow 1 seq 201 len 100
397
397
},
398
- true ,
398
+ 0 ,
399
399
[]int {0 },
400
400
[]int {340 },
401
401
false ,
@@ -412,7 +412,7 @@ func Test_handleGRO(t *testing.T) {
412
412
fields .TTL ++
413
413
}),
414
414
},
415
- true ,
415
+ 0 ,
416
416
[]int {0 , 1 , 2 , 3 },
417
417
[]int {140 , 140 , 128 , 128 },
418
418
false ,
@@ -429,7 +429,7 @@ func Test_handleGRO(t *testing.T) {
429
429
fields .TOS ++
430
430
}),
431
431
},
432
- true ,
432
+ 0 ,
433
433
[]int {0 , 1 , 2 , 3 },
434
434
[]int {140 , 140 , 128 , 128 },
435
435
false ,
@@ -446,7 +446,7 @@ func Test_handleGRO(t *testing.T) {
446
446
fields .Flags = 1
447
447
}),
448
448
},
449
- true ,
449
+ 0 ,
450
450
[]int {0 , 1 , 2 , 3 },
451
451
[]int {140 , 140 , 128 , 128 },
452
452
false ,
@@ -463,7 +463,7 @@ func Test_handleGRO(t *testing.T) {
463
463
fields .Flags = 2
464
464
}),
465
465
},
466
- true ,
466
+ 0 ,
467
467
[]int {0 , 1 , 2 , 3 },
468
468
[]int {140 , 140 , 128 , 128 },
469
469
false ,
@@ -480,7 +480,7 @@ func Test_handleGRO(t *testing.T) {
480
480
fields .HopLimit ++
481
481
}),
482
482
},
483
- true ,
483
+ 0 ,
484
484
[]int {0 , 1 , 2 , 3 },
485
485
[]int {160 , 160 , 148 , 148 },
486
486
false ,
@@ -497,7 +497,7 @@ func Test_handleGRO(t *testing.T) {
497
497
fields .TrafficClass ++
498
498
}),
499
499
},
500
- true ,
500
+ 0 ,
501
501
[]int {0 , 1 , 2 , 3 },
502
502
[]int {160 , 160 , 148 , 148 },
503
503
false ,
@@ -507,7 +507,7 @@ func Test_handleGRO(t *testing.T) {
507
507
for _ , tt := range tests {
508
508
t .Run (tt .name , func (t * testing.T ) {
509
509
toWrite := make ([]int , 0 , len (tt .pktsIn ))
510
- err := handleGRO (tt .pktsIn , offset , newTCPGROTable (), newUDPGROTable (), tt .canUDPGRO , & toWrite )
510
+ err := handleGRO (tt .pktsIn , offset , newTCPGROTable (), newUDPGROTable (), tt .gro , & toWrite )
511
511
if err != nil {
512
512
if tt .wantErr {
513
513
return
@@ -552,99 +552,111 @@ func Test_packetIsGROCandidate(t *testing.T) {
552
552
udp6TooShort := udp6 [:47 ]
553
553
554
554
tests := []struct {
555
- name string
556
- b []byte
557
- canUDPGRO bool
558
- want groCandidateType
555
+ name string
556
+ b []byte
557
+ gro groDisablementFlags
558
+ want groCandidateType
559
559
}{
560
560
{
561
561
"tcp4" ,
562
562
tcp4 ,
563
- true ,
563
+ 0 ,
564
564
tcp4GROCandidate ,
565
565
},
566
+ {
567
+ "tcp4 no support" ,
568
+ tcp4 ,
569
+ tcpGRODisabled ,
570
+ notGROCandidate ,
571
+ },
566
572
{
567
573
"tcp6" ,
568
574
tcp6 ,
569
- true ,
575
+ 0 ,
570
576
tcp6GROCandidate ,
571
577
},
578
+ {
579
+ "tcp6 no support" ,
580
+ tcp6 ,
581
+ tcpGRODisabled ,
582
+ notGROCandidate ,
583
+ },
572
584
{
573
585
"udp4" ,
574
586
udp4 ,
575
- true ,
587
+ 0 ,
576
588
udp4GROCandidate ,
577
589
},
578
590
{
579
591
"udp4 no support" ,
580
592
udp4 ,
581
- false ,
593
+ udpGRODisabled ,
582
594
notGROCandidate ,
583
595
},
584
596
{
585
597
"udp6" ,
586
598
udp6 ,
587
- true ,
599
+ 0 ,
588
600
udp6GROCandidate ,
589
601
},
590
602
{
591
603
"udp6 no support" ,
592
604
udp6 ,
593
- false ,
605
+ udpGRODisabled ,
594
606
notGROCandidate ,
595
607
},
596
608
{
597
609
"udp4 too short" ,
598
610
udp4TooShort ,
599
- true ,
611
+ 0 ,
600
612
notGROCandidate ,
601
613
},
602
614
{
603
615
"udp6 too short" ,
604
616
udp6TooShort ,
605
- true ,
617
+ 0 ,
606
618
notGROCandidate ,
607
619
},
608
620
{
609
621
"tcp4 too short" ,
610
622
tcp4TooShort ,
611
- true ,
623
+ 0 ,
612
624
notGROCandidate ,
613
625
},
614
626
{
615
627
"tcp6 too short" ,
616
628
tcp6TooShort ,
617
- true ,
629
+ 0 ,
618
630
notGROCandidate ,
619
631
},
620
632
{
621
633
"invalid IP version" ,
622
634
[]byte {0x00 },
623
- true ,
635
+ 0 ,
624
636
notGROCandidate ,
625
637
},
626
638
{
627
639
"invalid IP header len" ,
628
640
ip4InvalidHeaderLen ,
629
- true ,
641
+ 0 ,
630
642
notGROCandidate ,
631
643
},
632
644
{
633
645
"ip4 invalid protocol" ,
634
646
ip4InvalidProtocol ,
635
- true ,
647
+ 0 ,
636
648
notGROCandidate ,
637
649
},
638
650
{
639
651
"ip6 invalid protocol" ,
640
652
ip6InvalidProtocol ,
641
- true ,
653
+ 0 ,
642
654
notGROCandidate ,
643
655
},
644
656
}
645
657
for _ , tt := range tests {
646
658
t .Run (tt .name , func (t * testing.T ) {
647
- if got := packetIsGROCandidate (tt .b , tt .canUDPGRO ); got != tt .want {
659
+ if got := packetIsGROCandidate (tt .b , tt .gro ); got != tt .want {
648
660
t .Errorf ("packetIsGROCandidate() = %v, want %v" , got , tt .want )
649
661
}
650
662
})
0 commit comments