1#ifndef MAC_ADDRESS_HPP_FDINBLBS
2#define MAC_ADDRESS_HPP_FDINBLBS
4#include <vanetza/common/serialization.hpp>
5#include <boost/operators.hpp>
6#include <boost/optional.hpp>
10#include <initializer_list>
18class MacAddress :
public boost::totally_ordered<MacAddress>
21 static constexpr std::size_t length_bytes = 6;
24 MacAddress(std::initializer_list<uint8_t> args);
30 std::array<uint8_t, length_bytes> octets;
36std::ostream& operator<<(std::ostream& os,
const MacAddress&);
44bool parse_mac_address(
const std::string& str,
MacAddress& addr);
51boost::optional<MacAddress> parse_mac_address(
const std::string& str);
62 const std::size_t octets = std::min(mac.octets.size(),
sizeof(T));
63 for (std::size_t i = 0; i < octets; ++i) {
64 mac.octets[i] = value >> (8 * (octets - i - 1)) & 0xff;
74void serialize(OutputArchive& out,
const MacAddress& addr);
81void deserialize(InputArchive& in, MacAddress& addr);
89struct hash<vanetza::MacAddress>
94 for (
auto octet : addr.octets) {
95 tmp ^= hash<decltype(octet)>()(octet);