@@ -1366,69 +1366,6 @@ static void test_redir(struct test_sockmap_listen *skel, struct bpf_map *map,
1366
1366
}
1367
1367
}
1368
1368
1369
- static void pairs_redir_to_connected (int cli0 , int peer0 , int cli1 , int peer1 ,
1370
- int sock_mapfd , int nop_mapfd ,
1371
- int verd_mapfd , enum redir_mode mode ,
1372
- int send_flags )
1373
- {
1374
- const char * log_prefix = redir_mode_str (mode );
1375
- unsigned int pass ;
1376
- int err , n ;
1377
- u32 key ;
1378
- char b ;
1379
-
1380
- zero_verdict_count (verd_mapfd );
1381
-
1382
- err = add_to_sockmap (sock_mapfd , peer0 , peer1 );
1383
- if (err )
1384
- return ;
1385
-
1386
- if (nop_mapfd >= 0 ) {
1387
- err = add_to_sockmap (nop_mapfd , cli0 , cli1 );
1388
- if (err )
1389
- return ;
1390
- }
1391
-
1392
- /* Last byte is OOB data when send_flags has MSG_OOB bit set */
1393
- n = xsend (cli1 , "ab" , 2 , send_flags );
1394
- if (n >= 0 && n < 2 )
1395
- FAIL ("%s: incomplete send" , log_prefix );
1396
- if (n < 2 )
1397
- return ;
1398
-
1399
- key = SK_PASS ;
1400
- err = xbpf_map_lookup_elem (verd_mapfd , & key , & pass );
1401
- if (err )
1402
- return ;
1403
- if (pass != 1 )
1404
- FAIL ("%s: want pass count 1, have %d" , log_prefix , pass );
1405
-
1406
- n = recv_timeout (mode == REDIR_INGRESS ? peer0 : cli0 , & b , 1 , 0 , IO_TIMEOUT_SEC );
1407
- if (n < 0 )
1408
- FAIL_ERRNO ("%s: recv_timeout" , log_prefix );
1409
- if (n == 0 )
1410
- FAIL ("%s: incomplete recv" , log_prefix );
1411
-
1412
- if (send_flags & MSG_OOB ) {
1413
- /* Check that we can't read OOB while in sockmap */
1414
- errno = 0 ;
1415
- n = recv (peer1 , & b , 1 , MSG_OOB | MSG_DONTWAIT );
1416
- if (n != -1 || errno != EOPNOTSUPP )
1417
- FAIL ("%s: recv(MSG_OOB): expected EOPNOTSUPP: retval=%d errno=%d" ,
1418
- log_prefix , n , errno );
1419
-
1420
- /* Remove peer1 from sockmap */
1421
- xbpf_map_delete_elem (sock_mapfd , & (int ){ 1 });
1422
-
1423
- /* Check that OOB was dropped on redirect */
1424
- errno = 0 ;
1425
- n = recv (peer1 , & b , 1 , MSG_OOB | MSG_DONTWAIT );
1426
- if (n != -1 || errno != EINVAL )
1427
- FAIL ("%s: recv(MSG_OOB): expected EINVAL: retval=%d errno=%d" ,
1428
- log_prefix , n , errno );
1429
- }
1430
- }
1431
-
1432
1369
static void test_reuseport (struct test_sockmap_listen * skel ,
1433
1370
struct bpf_map * map , int family , int sotype )
1434
1371
{
@@ -1469,68 +1406,6 @@ static void test_reuseport(struct test_sockmap_listen *skel,
1469
1406
}
1470
1407
}
1471
1408
1472
- static int inet_socketpair (int family , int type , int * s , int * c )
1473
- {
1474
- return create_pair (family , type | SOCK_NONBLOCK , s , c );
1475
- }
1476
-
1477
- static void udp_redir_to_connected (int family , int sock_mapfd , int verd_mapfd ,
1478
- enum redir_mode mode )
1479
- {
1480
- int c0 , c1 , p0 , p1 ;
1481
- int err ;
1482
-
1483
- err = inet_socketpair (family , SOCK_DGRAM , & p0 , & c0 );
1484
- if (err )
1485
- return ;
1486
- err = inet_socketpair (family , SOCK_DGRAM , & p1 , & c1 );
1487
- if (err )
1488
- goto close_cli0 ;
1489
-
1490
- pairs_redir_to_connected (c0 , p0 , c1 , p1 , sock_mapfd , -1 , verd_mapfd ,
1491
- mode , NO_FLAGS );
1492
-
1493
- xclose (c1 );
1494
- xclose (p1 );
1495
- close_cli0 :
1496
- xclose (c0 );
1497
- xclose (p0 );
1498
- }
1499
-
1500
- static void udp_skb_redir_to_connected (struct test_sockmap_listen * skel ,
1501
- struct bpf_map * inner_map , int family )
1502
- {
1503
- int verdict = bpf_program__fd (skel -> progs .prog_skb_verdict );
1504
- int verdict_map = bpf_map__fd (skel -> maps .verdict_map );
1505
- int sock_map = bpf_map__fd (inner_map );
1506
- int err ;
1507
-
1508
- err = xbpf_prog_attach (verdict , sock_map , BPF_SK_SKB_VERDICT , 0 );
1509
- if (err )
1510
- return ;
1511
-
1512
- skel -> bss -> test_ingress = false;
1513
- udp_redir_to_connected (family , sock_map , verdict_map , REDIR_EGRESS );
1514
- skel -> bss -> test_ingress = true;
1515
- udp_redir_to_connected (family , sock_map , verdict_map , REDIR_INGRESS );
1516
-
1517
- xbpf_prog_detach2 (verdict , sock_map , BPF_SK_SKB_VERDICT );
1518
- }
1519
-
1520
- static void test_udp_redir (struct test_sockmap_listen * skel , struct bpf_map * map ,
1521
- int family )
1522
- {
1523
- const char * family_name , * map_name ;
1524
- char s [MAX_TEST_NAME ];
1525
-
1526
- family_name = family_str (family );
1527
- map_name = map_type_str (map );
1528
- snprintf (s , sizeof (s ), "%s %s %s" , map_name , family_name , __func__ );
1529
- if (!test__start_subtest (s ))
1530
- return ;
1531
- udp_skb_redir_to_connected (skel , map , family );
1532
- }
1533
-
1534
1409
static void run_tests (struct test_sockmap_listen * skel , struct bpf_map * map ,
1535
1410
int family )
1536
1411
{
@@ -1539,7 +1414,6 @@ static void run_tests(struct test_sockmap_listen *skel, struct bpf_map *map,
1539
1414
test_redir (skel , map , family , SOCK_STREAM );
1540
1415
test_reuseport (skel , map , family , SOCK_STREAM );
1541
1416
test_reuseport (skel , map , family , SOCK_DGRAM );
1542
- test_udp_redir (skel , map , family );
1543
1417
}
1544
1418
1545
1419
void serial_test_sockmap_listen (void )
0 commit comments