@@ -1429,64 +1429,6 @@ static void pairs_redir_to_connected(int cli0, int peer0, int cli1, int peer1,
1429
1429
}
1430
1430
}
1431
1431
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
-
1490
1432
static void test_reuseport (struct test_sockmap_listen * skel ,
1491
1433
struct bpf_map * map , int family , int sotype )
1492
1434
{
@@ -1589,162 +1531,6 @@ static void test_udp_redir(struct test_sockmap_listen *skel, struct bpf_map *map
1589
1531
udp_skb_redir_to_connected (skel , map , family );
1590
1532
}
1591
1533
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
-
1748
1534
static void run_tests (struct test_sockmap_listen * skel , struct bpf_map * map ,
1749
1535
int family )
1750
1536
{
@@ -1754,7 +1540,6 @@ static void run_tests(struct test_sockmap_listen *skel, struct bpf_map *map,
1754
1540
test_reuseport (skel , map , family , SOCK_STREAM );
1755
1541
test_reuseport (skel , map , family , SOCK_DGRAM );
1756
1542
test_udp_redir (skel , map , family );
1757
- test_udp_unix_redir (skel , map , family );
1758
1543
}
1759
1544
1760
1545
void serial_test_sockmap_listen (void )
@@ -1770,14 +1555,10 @@ void serial_test_sockmap_listen(void)
1770
1555
skel -> bss -> test_sockmap = true;
1771
1556
run_tests (skel , skel -> maps .sock_map , AF_INET );
1772
1557
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 );
1775
1558
1776
1559
skel -> bss -> test_sockmap = false;
1777
1560
run_tests (skel , skel -> maps .sock_hash , AF_INET );
1778
1561
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 );
1781
1562
1782
1563
test_sockmap_listen__destroy (skel );
1783
1564
}
0 commit comments