]> git.tdb.fi Git - libs/net.git/blobdiff - source/sockaddr.cpp
Add IPv6 support
[libs/net.git] / source / sockaddr.cpp
index c3ae2db3091d06730b183a6ad51f886808b1fad9..26c77b643df8b4ae9b8180ddd1c38145f71dcc65 100644 (file)
@@ -1,22 +1,30 @@
 /* $Id$
 
 This file is part of libmspnet
-Copyright © 2008  Mikkosoft Productions, Mikko Rasa
+Copyright © 2008, 2011  Mikkosoft Productions, Mikko Rasa
 Distributed under the LGPL
 */
 
 #include <msp/core/except.h>
 #include "inet.h"
+#include "inet6.h"
 
 namespace Msp {
 namespace Net {
 
-SockAddr *SockAddr::create(sockaddr &sa)
+unsigned SockAddr::fill_sockaddr(sockaddr_storage &sa) const
 {
-       switch(sa.sa_family)
+       return fill_sockaddr(reinterpret_cast<sockaddr &>(sa));
+}
+
+SockAddr *SockAddr::create(const sockaddr_storage &sa)
+{
+       switch(sa.ss_family)
        {
        case AF_INET:
-               return new InetAddr(reinterpret_cast<sockaddr_in &>(sa));
+               return new InetAddr(reinterpret_cast<const sockaddr_in &>(sa));
+       case AF_INET6:
+               return new Inet6Addr(reinterpret_cast<const sockaddr_in6 &>(sa));
        default:
                throw InvalidParameterValue("Unknown address family");
        }