Socket/Protocols/INet: Extend INet6SocketAddress syntax to support more flexible...
[senf.git] / Socket / Protocols / INet / INet6Address.hh
index 16d2e44..383f87f 100644 (file)
@@ -162,12 +162,12 @@ namespace senf {
         ///@{
 
         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
@@ -216,6 +216,12 @@ namespace senf {
 
         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