blob: 1c78b64fc8c171ad11e9fba52159a8cefe9d6d17 [file] [log] [blame]
Ratan Gupta594123d2017-05-16 22:48:35 +05301#include <gtest/gtest.h>
2#include <netinet/in.h>
3#include "util.hpp"
4
5namespace phosphor
6{
7namespace network
8{
9
10class TestUtil : public testing::Test
11{
12 public:
13 TestUtil()
14 {
15 // Empty
16 }
17
18};
19
20TEST_F(TestUtil, ConvertV4MasktoPrefix)
21{
22 std::string mask = "255.255.255.0";
23 uint8_t prefix = toCidr(AF_INET, mask);
24 EXPECT_EQ(prefix, 24);
25
26 mask = "255.255.0.0";
27 prefix = toCidr(AF_INET, mask);
28 EXPECT_EQ(prefix, 16);
29
30 mask = "255.0.0.0";
31 prefix = toCidr(AF_INET, mask);
32 EXPECT_EQ(prefix, 8);
33
34 mask = "255.224.0.0";
35 prefix = toCidr(AF_INET, mask);
36 EXPECT_EQ(prefix, 11);
37
38 //Invalid Mask
39 mask = "255.0.255.0";
40 prefix = toCidr(AF_INET, mask);
41 EXPECT_EQ(prefix, 0);
42}
43
44TEST_F(TestUtil, convertV6MasktoPrefix)
45{
46 std::string mask = "ffff:ffff::";
47 uint8_t prefix = toCidr(AF_INET6, mask);
48 EXPECT_EQ(prefix, 32);
49
50 mask = "ffff:ffff:ffff::";
51 prefix = toCidr(AF_INET6, mask);
52 EXPECT_EQ(prefix, 48);
53
54 mask = "ffff:ffff:fc00::";
55 prefix = toCidr(AF_INET6, mask);
56 EXPECT_EQ(prefix, 38);
57
58 //Invalid Mask
59 mask = "ffff:0fff::";
60 prefix = toCidr(AF_INET6, mask);
61 EXPECT_EQ(prefix, 0);
62}
63
Ratan Gupta11cef802017-05-29 08:41:48 +053064TEST_F(TestUtil, isLinkLocaladdress)
Ratan Gupta594123d2017-05-16 22:48:35 +053065{
66 std::string ipaddress = "fe80:fec0::";
Nagaraju Goruganti66b974d2017-10-03 08:43:08 -050067 EXPECT_TRUE(isLinkLocalIP(ipaddress));
Ratan Gupta594123d2017-05-16 22:48:35 +053068
Nagaraju Goruganti66b974d2017-10-03 08:43:08 -050069 ipaddress = "2000:fe80:789::";
70 EXPECT_FALSE(isLinkLocalIP(ipaddress));
Ratan Gupta594123d2017-05-16 22:48:35 +053071
72 ipaddress = "2000:fe80::";
Nagaraju Goruganti66b974d2017-10-03 08:43:08 -050073 EXPECT_FALSE(isLinkLocalIP(ipaddress));
74
75 ipaddress = "169.254.3.3";
76 EXPECT_TRUE(isLinkLocalIP(ipaddress));
77
78 ipaddress = "3.169.254.3";
79 EXPECT_FALSE(isLinkLocalIP(ipaddress));
80
81 ipaddress = "3.3.169.254";
82 EXPECT_FALSE(isLinkLocalIP(ipaddress));
Ratan Gupta594123d2017-05-16 22:48:35 +053083}
84
85TEST_F(TestUtil, convertPrefixToMask)
86{
87 std::string mask = toMask(AF_INET, 24);
88 EXPECT_EQ(mask, "255.255.255.0");
89
90 mask = toMask(AF_INET, 8);
91 EXPECT_EQ(mask, "255.0.0.0");
92
93 mask = toMask(AF_INET, 27);
94 EXPECT_EQ(mask, "255.255.255.224");
95}
96
Ratan Gupta11cef802017-05-29 08:41:48 +053097TEST_F(TestUtil, getNetworkAddress)
98{
99 std::string address = getNetworkID(AF_INET,"9.3.23.251",24);
100 EXPECT_EQ("9.3.23.0",address);
101
102 address = getNetworkID(AF_INET,"9.3.23.251",25);
103 EXPECT_EQ("9.3.23.128",address);
104
105 address = getNetworkID(AF_INET6,"2001:db8:abcd:dd12::0",64);
106 EXPECT_EQ("2001:db8:abcd:dd12::",address);
107
108 address = getNetworkID(AF_INET,"a.b.c.d",25);
109 EXPECT_EQ("",address);
110
111 address = getNetworkID(AF_INET6,"2001:db8:gghh:dd12::0",64);
112 EXPECT_EQ("",address);
113
114
115 address = getNetworkID(AF_INET6,"fe80::201:6cff:fe80:228",64);
116 EXPECT_EQ("fe80::",address);
117}
118
Ratan Gupta594123d2017-05-16 22:48:35 +0530119}// namespce network
120}// namespace phosphor