30#ifndef TINS_IPV6_ADDRESS
31#define TINS_IPV6_ADDRESS
37#include <tins/cxxstd.h>
38#include <tins/macros.h>
47 static const size_t address_size = 16;
120 return address_ + address_size;
128 return address_ + address_size;
139 return std::equal(
begin(),
end(), rhs.address_);
150 return !(*
this == rhs);
161 return std::lexicographical_compare(
begin(),
end(), rhs.
begin(), rhs.
end());
183 return std::lexicographical_compare(rhs.
begin(), rhs.
end(),
begin(),
end());
212 template<
typename OutputIterator>
213 OutputIterator
copy(OutputIterator iter)
const {
214 return std::copy(
begin(),
end(), iter);
223 bool is_loopback()
const;
231 bool is_multicast()
const;
239 bool is_local_unicast()
const;
275 void init(
const char* addr);
277 uint8_t address_[address_size];
289 std::size_t output = Tins::IPv6Address::address_size;
291 for (; iter != addr.
end(); ++iter) {
292 output ^= *iter + 0x9e3779b9 + (output << 6) + (output >> 2);
Definition ipv6_address.h:45
IPv6Address()
Default constructor. Initializes this IPv6 address to "::".
Definition ipv6_address.cpp:74
Definition ipv6_address.h:45
static IPv6Address from_prefix_length(uint32_t prefix_length)
Constructs an IPv6 address from a prefix length.
Definition ipv6_address.cpp:62
std::string to_string() const
Retrieve the string representation of this address.
Definition ipv6_address.cpp:112
iterator end()
Definition ipv6_address.h:119
bool operator!=(const IPv6Address &rhs) const
Compares this address for inequality.
Definition ipv6_address.h:149
const_iterator end() const
Definition ipv6_address.h:127
iterator begin()
Definition ipv6_address.h:105
bool operator<=(const IPv6Address &rhs) const
Compares this address for less-than equality.
Definition ipv6_address.h:171
bool operator<(const IPv6Address &rhs) const
Compares this address for less-than inequality.
Definition ipv6_address.h:160
bool operator>(const IPv6Address &rhs) const
Compares this address for greater-than inequality.
Definition ipv6_address.h:182
IPv6Address operator~() const
Definition ipv6_address.cpp:170
IPv6Address()
Default constructor. Initializes this IPv6 address to "::".
Definition ipv6_address.cpp:74
const uint8_t * const_iterator
Definition ipv6_address.h:57
size_t size() const
Returns the size of an IPv6 Address.
Definition ipv6_address.h:246
IPv6Address operator&(const IPv6Address &rhs) const
Definition ipv6_address.cpp:150
IPv6Address operator|(const IPv6Address &rhs) const
Definition ipv6_address.cpp:160
const_iterator begin() const
Definition ipv6_address.h:112
bool operator>=(const IPv6Address &rhs) const
Compares this address for greater-than equality.
Definition ipv6_address.h:193
OutputIterator copy(OutputIterator iter) const
Helper function which copies the address into an output iterator.
Definition ipv6_address.h:213
bool operator==(const IPv6Address &rhs) const
Compares this address for equality.
Definition ipv6_address.h:138
uint8_t * iterator
Definition ipv6_address.h:52
TINS_API friend std::ostream & operator<<(std::ostream &os, const IPv6Address &addr)
Writes this address in hex-notation to a std::ostream.
The Tins namespace.
Definition address_range.h:38