#include #include #include "util.hpp" namespace phosphor { namespace network { class TestUtil : public testing::Test { public: TestUtil() { // Empty } }; TEST_F(TestUtil, ConvertV4MasktoPrefix) { std::string mask = "255.255.255.0"; uint8_t prefix = toCidr(AF_INET, mask); EXPECT_EQ(prefix, 24); mask = "255.255.0.0"; prefix = toCidr(AF_INET, mask); EXPECT_EQ(prefix, 16); mask = "255.0.0.0"; prefix = toCidr(AF_INET, mask); EXPECT_EQ(prefix, 8); mask = "255.224.0.0"; prefix = toCidr(AF_INET, mask); EXPECT_EQ(prefix, 11); //Invalid Mask mask = "255.0.255.0"; prefix = toCidr(AF_INET, mask); EXPECT_EQ(prefix, 0); } TEST_F(TestUtil, convertV6MasktoPrefix) { std::string mask = "ffff:ffff::"; uint8_t prefix = toCidr(AF_INET6, mask); EXPECT_EQ(prefix, 32); mask = "ffff:ffff:ffff::"; prefix = toCidr(AF_INET6, mask); EXPECT_EQ(prefix, 48); mask = "ffff:ffff:fc00::"; prefix = toCidr(AF_INET6, mask); EXPECT_EQ(prefix, 38); //Invalid Mask mask = "ffff:0fff::"; prefix = toCidr(AF_INET6, mask); EXPECT_EQ(prefix, 0); } TEST_F(TestUtil, isLinkLocaladdress) { std::string ipaddress = "fe80:fec0::"; EXPECT_TRUE(isLinkLocal(ipaddress)); ipaddress = "2000:4567:789::"; EXPECT_FALSE(isLinkLocal(ipaddress)); ipaddress = "2000:fe80::"; EXPECT_FALSE(isLinkLocal(ipaddress)); } TEST_F(TestUtil, convertPrefixToMask) { std::string mask = toMask(AF_INET, 24); EXPECT_EQ(mask, "255.255.255.0"); mask = toMask(AF_INET, 8); EXPECT_EQ(mask, "255.0.0.0"); mask = toMask(AF_INET, 27); EXPECT_EQ(mask, "255.255.255.224"); } TEST_F(TestUtil, getNetworkAddress) { std::string address = getNetworkID(AF_INET,"9.3.23.251",24); EXPECT_EQ("9.3.23.0",address); address = getNetworkID(AF_INET,"9.3.23.251",25); EXPECT_EQ("9.3.23.128",address); address = getNetworkID(AF_INET6,"2001:db8:abcd:dd12::0",64); EXPECT_EQ("2001:db8:abcd:dd12::",address); address = getNetworkID(AF_INET,"a.b.c.d",25); EXPECT_EQ("",address); address = getNetworkID(AF_INET6,"2001:db8:gghh:dd12::0",64); EXPECT_EQ("",address); address = getNetworkID(AF_INET6,"fe80::201:6cff:fe80:228",64); EXPECT_EQ("fe80::",address); } }// namespce network }// namespace phosphor