blob: 0d20d7d974c65e7d5289ed76f92e2991fba5f1ca [file] [log] [blame]
William A. Kennington IIIbb0eacc2022-10-21 15:22:06 -07001#include "types.hpp"
2
William A. Kennington IIIb9d7cba2022-11-08 10:54:11 -08003#include <fmt/format.h>
4
William A. Kennington IIIbb0eacc2022-10-21 15:22:06 -07005#include <charconv>
6
William A. Kennington III55bdc362022-11-04 17:57:21 -07007void phosphor::network::IfAddr::invalidPfx(uint8_t pfx)
William A. Kennington IIIb9d7cba2022-11-08 10:54:11 -08008{
9 throw std::invalid_argument(fmt::format("Invalid prefix {}", pfx));
10}
11
William A. Kennington III653114f2022-11-01 22:34:04 -070012std::size_t std::hash<in_addr>::operator()(in_addr addr) const noexcept
13{
14 return std::hash<decltype(addr.s_addr)>{}(addr.s_addr);
15}
16
17std::size_t std::hash<in6_addr>::operator()(in6_addr addr) const noexcept
18{
19 return phosphor::network::hash_multi(addr.s6_addr32[0], addr.s6_addr32[1],
20 addr.s6_addr32[2], addr.s6_addr32[3]);
21}
22
William A. Kennington IIIb9d7cba2022-11-08 10:54:11 -080023std::size_t std::hash<phosphor::network::IfAddr>::operator()(
24 phosphor::network::IfAddr addr) const noexcept
25{
26 return phosphor::network::hash_multi(addr.getAddr(), addr.getPfx());
27}
28
William A. Kennington IIIbb0eacc2022-10-21 15:22:06 -070029std::string std::to_string(ether_addr value)
30{
William A. Kennington III55bdc362022-11-04 17:57:21 -070031 return string(phosphor::network::detail::ToStrBuf<ether_addr>{}(value));
William A. Kennington IIIbb0eacc2022-10-21 15:22:06 -070032}
33std::string std::to_string(in_addr value)
34{
William A. Kennington III55bdc362022-11-04 17:57:21 -070035 return string(phosphor::network::detail::ToStrBuf<in_addr>{}(value));
William A. Kennington IIIbb0eacc2022-10-21 15:22:06 -070036}
37std::string std::to_string(in6_addr value)
38{
William A. Kennington III55bdc362022-11-04 17:57:21 -070039 return string(phosphor::network::detail::ToStrBuf<in6_addr>{}(value));
William A. Kennington IIIbb0eacc2022-10-21 15:22:06 -070040}
41std::string std::to_string(phosphor::network::InAddrAny value)
42{
William A. Kennington III55bdc362022-11-04 17:57:21 -070043 phosphor::network::detail::ToStrBuf<phosphor::network::InAddrAny> tsb;
44 return string(tsb(value));
William A. Kennington IIIbb0eacc2022-10-21 15:22:06 -070045}
William A. Kennington IIIb9d7cba2022-11-08 10:54:11 -080046
47std::string std::to_string(phosphor::network::IfAddr value)
48{
William A. Kennington III55bdc362022-11-04 17:57:21 -070049 phosphor::network::detail::ToStrBuf<phosphor::network::IfAddr> tsb;
50 return string(tsb(value));
William A. Kennington IIIb9d7cba2022-11-08 10:54:11 -080051}