blob: 0a46b1ff0b5a8275759ed32729d35a7f0b280c85 [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 III11b59a32023-06-02 15:56:33 -07005#include <stdplus/hash.hpp>
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{
William A. Kennington III11b59a32023-06-02 15:56:33 -070014 return stdplus::hashMulti(addr.s_addr);
William A. Kennington III653114f2022-11-01 22:34:04 -070015}
16
17std::size_t std::hash<in6_addr>::operator()(in6_addr addr) const noexcept
18{
William A. Kennington III11b59a32023-06-02 15:56:33 -070019 return stdplus::hashMulti(addr.s6_addr32);
William A. Kennington III653114f2022-11-01 22:34:04 -070020}
21
William A. Kennington IIIb9d7cba2022-11-08 10:54:11 -080022std::size_t std::hash<phosphor::network::IfAddr>::operator()(
23 phosphor::network::IfAddr addr) const noexcept
24{
William A. Kennington III11b59a32023-06-02 15:56:33 -070025 return stdplus::hashMulti(addr.getAddr(), addr.getPfx());
William A. Kennington IIIb9d7cba2022-11-08 10:54:11 -080026}
27
William A. Kennington IIIbb0eacc2022-10-21 15:22:06 -070028std::string std::to_string(ether_addr value)
29{
William A. Kennington III55bdc362022-11-04 17:57:21 -070030 return string(phosphor::network::detail::ToStrBuf<ether_addr>{}(value));
William A. Kennington IIIbb0eacc2022-10-21 15:22:06 -070031}
32std::string std::to_string(in_addr value)
33{
William A. Kennington III55bdc362022-11-04 17:57:21 -070034 return string(phosphor::network::detail::ToStrBuf<in_addr>{}(value));
William A. Kennington IIIbb0eacc2022-10-21 15:22:06 -070035}
36std::string std::to_string(in6_addr value)
37{
William A. Kennington III55bdc362022-11-04 17:57:21 -070038 return string(phosphor::network::detail::ToStrBuf<in6_addr>{}(value));
William A. Kennington IIIbb0eacc2022-10-21 15:22:06 -070039}
40std::string std::to_string(phosphor::network::InAddrAny value)
41{
William A. Kennington III55bdc362022-11-04 17:57:21 -070042 phosphor::network::detail::ToStrBuf<phosphor::network::InAddrAny> tsb;
43 return string(tsb(value));
William A. Kennington IIIbb0eacc2022-10-21 15:22:06 -070044}
William A. Kennington IIIb9d7cba2022-11-08 10:54:11 -080045
46std::string std::to_string(phosphor::network::IfAddr value)
47{
William A. Kennington III55bdc362022-11-04 17:57:21 -070048 phosphor::network::detail::ToStrBuf<phosphor::network::IfAddr> tsb;
49 return string(tsb(value));
William A. Kennington IIIb9d7cba2022-11-08 10:54:11 -080050}