@@ -1429,64 +1429,6 @@ static void pairs_redir_to_connected(int cli0, int peer0, int cli1, int peer1,
14291429 }
14301430}
14311431
1432- static void unix_redir_to_connected (int sotype , int sock_mapfd ,
1433- int verd_mapfd , enum redir_mode mode )
1434- {
1435- int c0 , c1 , p0 , p1 ;
1436- int sfd [2 ];
1437-
1438- if (socketpair (AF_UNIX , sotype | SOCK_NONBLOCK , 0 , sfd ))
1439- return ;
1440- c0 = sfd [0 ], p0 = sfd [1 ];
1441-
1442- if (socketpair (AF_UNIX , sotype | SOCK_NONBLOCK , 0 , sfd ))
1443- goto close0 ;
1444- c1 = sfd [0 ], p1 = sfd [1 ];
1445-
1446- pairs_redir_to_connected (c0 , p0 , c1 , p1 , sock_mapfd , -1 , verd_mapfd ,
1447- mode , NO_FLAGS );
1448-
1449- xclose (c1 );
1450- xclose (p1 );
1451- close0 :
1452- xclose (c0 );
1453- xclose (p0 );
1454- }
1455-
1456- static void unix_skb_redir_to_connected (struct test_sockmap_listen * skel ,
1457- struct bpf_map * inner_map , int sotype )
1458- {
1459- int verdict = bpf_program__fd (skel -> progs .prog_skb_verdict );
1460- int verdict_map = bpf_map__fd (skel -> maps .verdict_map );
1461- int sock_map = bpf_map__fd (inner_map );
1462- int err ;
1463-
1464- err = xbpf_prog_attach (verdict , sock_map , BPF_SK_SKB_VERDICT , 0 );
1465- if (err )
1466- return ;
1467-
1468- skel -> bss -> test_ingress = false;
1469- unix_redir_to_connected (sotype , sock_map , verdict_map , REDIR_EGRESS );
1470- skel -> bss -> test_ingress = true;
1471- unix_redir_to_connected (sotype , sock_map , verdict_map , REDIR_INGRESS );
1472-
1473- xbpf_prog_detach2 (verdict , sock_map , BPF_SK_SKB_VERDICT );
1474- }
1475-
1476- static void test_unix_redir (struct test_sockmap_listen * skel , struct bpf_map * map ,
1477- int sotype )
1478- {
1479- const char * family_name , * map_name ;
1480- char s [MAX_TEST_NAME ];
1481-
1482- family_name = family_str (AF_UNIX );
1483- map_name = map_type_str (map );
1484- snprintf (s , sizeof (s ), "%s %s %s" , map_name , family_name , __func__ );
1485- if (!test__start_subtest (s ))
1486- return ;
1487- unix_skb_redir_to_connected (skel , map , sotype );
1488- }
1489-
14901432static void test_reuseport (struct test_sockmap_listen * skel ,
14911433 struct bpf_map * map , int family , int sotype )
14921434{
@@ -1589,162 +1531,6 @@ static void test_udp_redir(struct test_sockmap_listen *skel, struct bpf_map *map
15891531 udp_skb_redir_to_connected (skel , map , family );
15901532}
15911533
1592- static void inet_unix_redir_to_connected (int family , int type , int sock_mapfd ,
1593- int verd_mapfd , enum redir_mode mode )
1594- {
1595- int c0 , c1 , p0 , p1 ;
1596- int sfd [2 ];
1597- int err ;
1598-
1599- if (socketpair (AF_UNIX , type | SOCK_NONBLOCK , 0 , sfd ))
1600- return ;
1601- c0 = sfd [0 ], p0 = sfd [1 ];
1602-
1603- err = inet_socketpair (family , type , & p1 , & c1 );
1604- if (err )
1605- goto close ;
1606-
1607- pairs_redir_to_connected (c0 , p0 , c1 , p1 , sock_mapfd , -1 , verd_mapfd ,
1608- mode , NO_FLAGS );
1609-
1610- xclose (c1 );
1611- xclose (p1 );
1612- close :
1613- xclose (c0 );
1614- xclose (p0 );
1615- }
1616-
1617- static void inet_unix_skb_redir_to_connected (struct test_sockmap_listen * skel ,
1618- struct bpf_map * inner_map , int family )
1619- {
1620- int verdict = bpf_program__fd (skel -> progs .prog_skb_verdict );
1621- int verdict_map = bpf_map__fd (skel -> maps .verdict_map );
1622- int sock_map = bpf_map__fd (inner_map );
1623- int err ;
1624-
1625- err = xbpf_prog_attach (verdict , sock_map , BPF_SK_SKB_VERDICT , 0 );
1626- if (err )
1627- return ;
1628-
1629- skel -> bss -> test_ingress = false;
1630- inet_unix_redir_to_connected (family , SOCK_DGRAM , sock_map , verdict_map ,
1631- REDIR_EGRESS );
1632- inet_unix_redir_to_connected (family , SOCK_STREAM , sock_map , verdict_map ,
1633- REDIR_EGRESS );
1634- skel -> bss -> test_ingress = true;
1635- inet_unix_redir_to_connected (family , SOCK_DGRAM , sock_map , verdict_map ,
1636- REDIR_INGRESS );
1637- inet_unix_redir_to_connected (family , SOCK_STREAM , sock_map , verdict_map ,
1638- REDIR_INGRESS );
1639-
1640- xbpf_prog_detach2 (verdict , sock_map , BPF_SK_SKB_VERDICT );
1641- }
1642-
1643- static void unix_inet_redir_to_connected (int family , int type , int sock_mapfd ,
1644- int nop_mapfd , int verd_mapfd ,
1645- enum redir_mode mode , int send_flags )
1646- {
1647- int c0 , c1 , p0 , p1 ;
1648- int sfd [2 ];
1649- int err ;
1650-
1651- err = inet_socketpair (family , type , & p0 , & c0 );
1652- if (err )
1653- return ;
1654-
1655- if (socketpair (AF_UNIX , type | SOCK_NONBLOCK , 0 , sfd ))
1656- goto close_cli0 ;
1657- c1 = sfd [0 ], p1 = sfd [1 ];
1658-
1659- pairs_redir_to_connected (c0 , p0 , c1 , p1 , sock_mapfd , nop_mapfd ,
1660- verd_mapfd , mode , send_flags );
1661-
1662- xclose (c1 );
1663- xclose (p1 );
1664- close_cli0 :
1665- xclose (c0 );
1666- xclose (p0 );
1667- }
1668-
1669- static void unix_inet_skb_redir_to_connected (struct test_sockmap_listen * skel ,
1670- struct bpf_map * inner_map , int family )
1671- {
1672- int verdict = bpf_program__fd (skel -> progs .prog_skb_verdict );
1673- int nop_map = bpf_map__fd (skel -> maps .nop_map );
1674- int verdict_map = bpf_map__fd (skel -> maps .verdict_map );
1675- int sock_map = bpf_map__fd (inner_map );
1676- int err ;
1677-
1678- err = xbpf_prog_attach (verdict , sock_map , BPF_SK_SKB_VERDICT , 0 );
1679- if (err )
1680- return ;
1681-
1682- skel -> bss -> test_ingress = false;
1683- unix_inet_redir_to_connected (family , SOCK_DGRAM ,
1684- sock_map , -1 , verdict_map ,
1685- REDIR_EGRESS , NO_FLAGS );
1686- unix_inet_redir_to_connected (family , SOCK_STREAM ,
1687- sock_map , -1 , verdict_map ,
1688- REDIR_EGRESS , NO_FLAGS );
1689-
1690- unix_inet_redir_to_connected (family , SOCK_DGRAM ,
1691- sock_map , nop_map , verdict_map ,
1692- REDIR_EGRESS , NO_FLAGS );
1693- unix_inet_redir_to_connected (family , SOCK_STREAM ,
1694- sock_map , nop_map , verdict_map ,
1695- REDIR_EGRESS , NO_FLAGS );
1696-
1697- /* MSG_OOB not supported by AF_UNIX SOCK_DGRAM */
1698- unix_inet_redir_to_connected (family , SOCK_STREAM ,
1699- sock_map , nop_map , verdict_map ,
1700- REDIR_EGRESS , MSG_OOB );
1701-
1702- skel -> bss -> test_ingress = true;
1703- unix_inet_redir_to_connected (family , SOCK_DGRAM ,
1704- sock_map , -1 , verdict_map ,
1705- REDIR_INGRESS , NO_FLAGS );
1706- unix_inet_redir_to_connected (family , SOCK_STREAM ,
1707- sock_map , -1 , verdict_map ,
1708- REDIR_INGRESS , NO_FLAGS );
1709-
1710- unix_inet_redir_to_connected (family , SOCK_DGRAM ,
1711- sock_map , nop_map , verdict_map ,
1712- REDIR_INGRESS , NO_FLAGS );
1713- unix_inet_redir_to_connected (family , SOCK_STREAM ,
1714- sock_map , nop_map , verdict_map ,
1715- REDIR_INGRESS , NO_FLAGS );
1716-
1717- /* MSG_OOB not supported by AF_UNIX SOCK_DGRAM */
1718- unix_inet_redir_to_connected (family , SOCK_STREAM ,
1719- sock_map , nop_map , verdict_map ,
1720- REDIR_INGRESS , MSG_OOB );
1721-
1722- xbpf_prog_detach2 (verdict , sock_map , BPF_SK_SKB_VERDICT );
1723- }
1724-
1725- static void test_udp_unix_redir (struct test_sockmap_listen * skel , struct bpf_map * map ,
1726- int family )
1727- {
1728- const char * family_name , * map_name ;
1729- struct netns_obj * netns ;
1730- char s [MAX_TEST_NAME ];
1731-
1732- family_name = family_str (family );
1733- map_name = map_type_str (map );
1734- snprintf (s , sizeof (s ), "%s %s %s" , map_name , family_name , __func__ );
1735- if (!test__start_subtest (s ))
1736- return ;
1737-
1738- netns = netns_new ("sockmap_listen" , true);
1739- if (!ASSERT_OK_PTR (netns , "netns_new" ))
1740- return ;
1741-
1742- inet_unix_skb_redir_to_connected (skel , map , family );
1743- unix_inet_skb_redir_to_connected (skel , map , family );
1744-
1745- netns_free (netns );
1746- }
1747-
17481534static void run_tests (struct test_sockmap_listen * skel , struct bpf_map * map ,
17491535 int family )
17501536{
@@ -1754,7 +1540,6 @@ static void run_tests(struct test_sockmap_listen *skel, struct bpf_map *map,
17541540 test_reuseport (skel , map , family , SOCK_STREAM );
17551541 test_reuseport (skel , map , family , SOCK_DGRAM );
17561542 test_udp_redir (skel , map , family );
1757- test_udp_unix_redir (skel , map , family );
17581543}
17591544
17601545void serial_test_sockmap_listen (void )
@@ -1770,14 +1555,10 @@ void serial_test_sockmap_listen(void)
17701555 skel -> bss -> test_sockmap = true;
17711556 run_tests (skel , skel -> maps .sock_map , AF_INET );
17721557 run_tests (skel , skel -> maps .sock_map , AF_INET6 );
1773- test_unix_redir (skel , skel -> maps .sock_map , SOCK_DGRAM );
1774- test_unix_redir (skel , skel -> maps .sock_map , SOCK_STREAM );
17751558
17761559 skel -> bss -> test_sockmap = false;
17771560 run_tests (skel , skel -> maps .sock_hash , AF_INET );
17781561 run_tests (skel , skel -> maps .sock_hash , AF_INET6 );
1779- test_unix_redir (skel , skel -> maps .sock_hash , SOCK_DGRAM );
1780- test_unix_redir (skel , skel -> maps .sock_hash , SOCK_STREAM );
17811562
17821563 test_sockmap_listen__destroy (skel );
17831564}
0 commit comments