@@ -1366,69 +1366,6 @@ static void test_redir(struct test_sockmap_listen *skel, struct bpf_map *map,
13661366 }
13671367}
13681368
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-
14321369static void test_reuseport (struct test_sockmap_listen * skel ,
14331370 struct bpf_map * map , int family , int sotype )
14341371{
@@ -1469,68 +1406,6 @@ static void test_reuseport(struct test_sockmap_listen *skel,
14691406 }
14701407}
14711408
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-
15341409static void run_tests (struct test_sockmap_listen * skel , struct bpf_map * map ,
15351410 int family )
15361411{
@@ -1539,7 +1414,6 @@ static void run_tests(struct test_sockmap_listen *skel, struct bpf_map *map,
15391414 test_redir (skel , map , family , SOCK_STREAM );
15401415 test_reuseport (skel , map , family , SOCK_STREAM );
15411416 test_reuseport (skel , map , family , SOCK_DGRAM );
1542- test_udp_redir (skel , map , family );
15431417}
15441418
15451419void serial_test_sockmap_listen (void )
0 commit comments