Skip to content

Commit

Permalink
[C] Add additional cases for multicast interface matching.
Browse files Browse the repository at this point in the history
  • Loading branch information
mikeb01 committed Jun 16, 2024
1 parent e60c97c commit 427f8bd
Showing 1 changed file with 16 additions and 0 deletions.
16 changes: 16 additions & 0 deletions aeron-client/src/test/c/aeron_uri_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,7 @@ class UriLookupTest : public testing::Test
add_ifaddr(AF_INET6, "eth1:3", "fe80:1:abcd:0:0:0:0:1", "FFFF:FFFF:FFFF::", IFF_MULTICAST | IFF_UP);
add_ifaddr(AF_INET6, "eth1:1", "fe80:0:0:0:0:0:0:1", "FFFF::", IFF_MULTICAST | IFF_UP);
add_ifaddr(AF_INET6, "eth1:2", "fe80:1:0:0:0:0:0:1", "FFFF:FFFF::", IFF_MULTICAST | IFF_UP);
add_ifaddr(AF_INET, "vlan.13", "172.18.13.5", "255.255.255.224", IFF_MULTICAST | IFF_UP);
}
}

Expand Down Expand Up @@ -257,6 +258,21 @@ TEST_F(UriLookupTest, shouldNotFindUnknown)
ASSERT_EQ(aeron_find_interface("192.168.2.20/24", (struct sockaddr_storage *)&addr, &if_index), -1);
}

TEST_F(UriLookupTest, shouldFindIPv4Multicast)
{
char buffer[AERON_MAX_PATH] = { 0 };
struct sockaddr_storage addr = {};
auto *addr_in = (struct sockaddr_in *)&addr;
unsigned int if_index = 0;

ASSERT_EQ(aeron_find_interface("172.18.13.0/27", (struct sockaddr_storage *)&addr, &if_index), 0);
EXPECT_STREQ(inet_ntop(AF_INET, &addr_in->sin_addr, buffer, sizeof(buffer)), "172.18.13.5");
ASSERT_EQ(aeron_find_interface("172.18.13.5", (struct sockaddr_storage *)&addr, &if_index), 0);
EXPECT_STREQ(inet_ntop(AF_INET, &addr_in->sin_addr, buffer, sizeof(buffer)), "172.18.13.5");
ASSERT_EQ(aeron_find_interface("172.18.13.5/32", (struct sockaddr_storage *)&addr, &if_index), 0);
EXPECT_STREQ(inet_ntop(AF_INET, &addr_in->sin_addr, buffer, sizeof(buffer)), "172.18.13.5");
}

class UriPrintTest : public testing::TestWithParam<const char *>
{
public:
Expand Down

0 comments on commit 427f8bd

Please sign in to comment.