// Custom includes
#include <iostream>
#include <string>
+#include <netinet/in.h>
#include <boost/cstdint.hpp>
#include <boost/array.hpp>
#include <boost/operators.hpp>
///@{
explicit INet6Address(senf::NoInit_t); ///< Construct uninitialized (!) address
- INet6Address(boost::uint16_t a0=0u, boost::uint16_t a1=0u, boost::uint16_t a2=0u,
- boost::uint16_t a3=0u, boost::uint16_t a4=0u, boost::uint16_t a5=0u,
- boost::uint16_t a6=0u, boost::uint16_t a7=0u);
+ explicit INet6Address(boost::uint16_t a0=0u, boost::uint16_t a1=0u, boost::uint16_t a2=0u,
+ boost::uint16_t a3=0u, boost::uint16_t a4=0u, boost::uint16_t a5=0u,
+ boost::uint16_t a6=0u, boost::uint16_t a7=0u);
///< Construct an address constant
+
+ static INet6Address from_in6addr(in6_addr const & in6addr); ///< Construct from std C struct
static INet6Address from_string(std::string const & s, Resolve_t resolve = ResolveINet6);
///< Convert string to address
bool unicast() const; ///< \c true, if address is unicast
bool multicast() const; ///< \c true, if address is multicast
+ /**< To support a linux specific extension, INet4 multicast
+ addressed mapped to INet6 are also interpreted as
+ multicast addresses. This is NOT part of the standard,
+ however the standard officially only allows unicast v4
+ addresses to be mapped to v6 so this does not collide
+ with any standard conforming use. */
ScopeId scope() const; ///< Get address's scope
/**< The scope of an address is one of the \ref ScopeId