xref: /openbmc/phosphor-networkd/src/types.cpp (revision 8110f7dd)
1 #include "types.hpp"
2 
3 #include <fmt/format.h>
4 
5 void phosphor::network::IfAddr::invalidPfx(uint8_t pfx)
6 {
7     throw std::invalid_argument(fmt::format("Invalid prefix {}", pfx));
8 }
9 
10 std::size_t std::hash<in_addr>::operator()(in_addr addr) const noexcept
11 {
12     return std::hash<decltype(addr.s_addr)>{}(addr.s_addr);
13 }
14 
15 std::size_t std::hash<in6_addr>::operator()(in6_addr addr) const noexcept
16 {
17     return phosphor::network::hash_multi(addr.s6_addr32[0], addr.s6_addr32[1],
18                                          addr.s6_addr32[2], addr.s6_addr32[3]);
19 }
20 
21 std::size_t std::hash<phosphor::network::IfAddr>::operator()(
22     phosphor::network::IfAddr addr) const noexcept
23 {
24     return phosphor::network::hash_multi(addr.getAddr(), addr.getPfx());
25 }
26 
27 std::string std::to_string(ether_addr value)
28 {
29     return string(phosphor::network::detail::ToStrBuf<ether_addr>{}(value));
30 }
31 std::string std::to_string(in_addr value)
32 {
33     return string(phosphor::network::detail::ToStrBuf<in_addr>{}(value));
34 }
35 std::string std::to_string(in6_addr value)
36 {
37     return string(phosphor::network::detail::ToStrBuf<in6_addr>{}(value));
38 }
39 std::string std::to_string(phosphor::network::InAddrAny value)
40 {
41     phosphor::network::detail::ToStrBuf<phosphor::network::InAddrAny> tsb;
42     return string(tsb(value));
43 }
44 
45 std::string std::to_string(phosphor::network::IfAddr value)
46 {
47     phosphor::network::detail::ToStrBuf<phosphor::network::IfAddr> tsb;
48     return string(tsb(value));
49 }
50