-/* $Id$
-
-This file is part of libmspnet
-Copyright © 2008 Mikkosoft Productions, Mikko Rasa
-Distributed under the LGPL
-*/
-
-#include <msp/core/except.h>
+#include <stdexcept>
#include "inet.h"
+#include "inet6.h"
+#include "sockaddr_private.h"
+
+using namespace std;
namespace Msp {
namespace Net {
-SockAddr *SockAddr::create(sockaddr &sa)
+SockAddr *SockAddr::new_from_sys(const SysAddr &sa)
{
- switch(sa.sa_family)
+ switch(sa.addr.ss_family)
{
case AF_INET:
- return new InetAddr(reinterpret_cast<sockaddr_in &>(sa));
+ return new InetAddr(sa);
+ case AF_INET6:
+ return new Inet6Addr(sa);
default:
- throw InvalidParameterValue("Unknown address family");
+ throw invalid_argument("SockAddr::create");
}
}
+SockAddr::SysAddr::SysAddr():
+ size(sizeof(sockaddr_storage))
+{
+ addr.ss_family = AF_UNSPEC;
+}
+
} // namespace Net
} // namespace Msp