32 #include <gtest/gtest.h>
54 TEST(interfaces_test, Find_lo)
56 auto ifs = NetIf::all_interfaces();
57 auto i = std::find_if(ifs.begin(), ifs.end(), [](
const auto& x) ->
bool
59 return x.name() ==
"lo";
61 ASSERT_NE(i, ifs.end());
62 ASSERT_EQ(i->index(), 1);
63 ASSERT_EQ(i->hw_addr(),
"00:00:00:00:00:00");
67 TEST(interfaces_test, Find_lo_ipv4)
69 auto ifs = NetIf::all_interfaces();
70 auto i = std::find_if(ifs.begin(), ifs.end(), [](
const auto& x) ->
bool
72 return x.name() ==
"lo";
74 ASSERT_NE(i, ifs.end());
75 auto sa = std::find_if(i->addrs().begin(), i->addrs().end(), [](
const NetIfAddr& ad) ->
bool
77 return ad.test_flags(InetAddrFlag::ipv4|InetAddrFlag::loopback);
79 ASSERT_NE(sa, i->addrs().end());
83 TEST(interfaces_test, find_lo_ipv6)
85 auto ifs = NetIf::all_interfaces();
86 auto i = std::find_if(ifs.begin(), ifs.end(), [](
const auto& x) ->
bool
88 return x.name() ==
"lo";
90 ASSERT_NE(i, ifs.end());
91 auto sa = std::find_if(i->addrs().begin(), i->addrs().end(), [](
const NetIfAddr& ad) ->
bool
93 return ad.test_flags(InetAddrFlag::ipv6|InetAddrFlag::loopback);
95 ASSERT_NE(sa, i->addrs().end());
99 TEST(interfaces_test, find_unicast_ipv4)
102 for (
auto& i : NetIf::all_interfaces())
104 for (
auto& j : i.addrs())
116 TEST(interfaces_test, find_unicast_ipv6)
119 for (
auto& i : NetIf::all_interfaces())
121 for (
auto& j : i.addrs())
133 TEST(interfaces_test, iterate_addrs_test_local)
135 auto ifs = NetIf::all_interfaces();
136 ASSERT_TRUE(ifs.size() > 0);
141 for (
auto& j : i.addrs())
145 cout <<
"*found link local address: " << j << endl;
146 ASSERT_EQ(j.scope_id(), i.index());
152 TEST(host_addrs, local_addrs)
154 vector<string> hosts({
161 for (
auto& h : hosts)
163 auto v = NetIf::host_addrs(h);
164 cout <<
"host " << h <<
" for all returned " << v.size() <<
" entries" << endl;
169 ASSERT_GT(v.size(), 0);
170 v = NetIf::host_addrs(h, NetIf::SocketType::tcp_stream);
171 cout <<
"host " << h <<
" for tcp returned " << v.size() <<
" entries" << endl;
176 ASSERT_GT(v.size(), 0);
177 v = NetIf::host_addrs(h, NetIf::SocketType::udp_datagram);
178 cout <<
"host " << h <<
" for udp returned " << v.size() <<
" entries" << endl;
183 ASSERT_GT(v.size(), 0);
185 auto ifs = NetIf::all_interfaces();
191 for (
auto& a : i.addrs())
193 auto v = NetIf::host_addrs(a.host());
194 ASSERT_GT(v.size(), 0);
Named address within an interface.
NetIfFlag
Interface flags.
@ if_running
Resources allocated.
@ if_up
Interface is running.
InetAddrFlag
Internet address flags.
@ unicast
Unicast address.
@ link_local
Traffic is restricted to the local link.
Internet network interface utility.
Low-level tcp and udp sockets.
TEST(inet_example, client_server_stream_test)
[Inet client server]