/** \file
\brief INet6Address public header */
-#ifndef HH_INet6Address_
-#define HH_INet6Address_ 1
+#ifndef HH_SENF_Socket_Protocols_INet_INet6Address_
+#define HH_SENF_Socket_Protocols_INet_INet6Address_ 1
// Custom includes
#include <iostream>
///@{
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
- INet6Address(in6_addr in6addr); ///< Construct from std c struct
+ 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
\par
INet4 compatible INet6 addresses are not directly
supported, they are deprecated in the RFC. */
+ std::string toString() const;
+ ///< get the string representation of this INet6Address
+ in6_addr toin6_addr() const;
+ ///< get the linux in6_addr struct (convinience only)
+
+
///@}
///////////////////////////////////////////////////////////////////////////
///\name Accessors
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