X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fsockaddr.cpp;h=9b41f81b948492dc077920dbe83ea06a80ea8a67;hb=21c596567e3b6fd794ed6af73d304ce2bc70e58f;hp=f6123ca38c685e9b3631593bdd9e89b4de248587;hpb=4696a776e2875697ea0d6a733609dd9c37918971;p=libs%2Fnet.git diff --git a/source/sockaddr.cpp b/source/sockaddr.cpp index f6123ca..9b41f81 100644 --- a/source/sockaddr.cpp +++ b/source/sockaddr.cpp @@ -1,28 +1,30 @@ #include #include "inet.h" #include "inet6.h" +#include "sockaddr_private.h" using namespace std; namespace Msp { namespace Net { -SockAddr *SockAddr::create(const sockaddr_storage &sa) +SockAddr *SockAddr::new_from_sys(const SysAddr &sa) { - switch(sa.ss_family) + switch(sa.addr.ss_family) { case AF_INET: - return new InetAddr(reinterpret_cast(sa)); + return new InetAddr(sa); case AF_INET6: - return new Inet6Addr(reinterpret_cast(sa)); + return new Inet6Addr(sa); default: throw invalid_argument("SockAddr::create"); } } -unsigned SockAddr::fill_sockaddr(sockaddr_storage &sa) const +SockAddr::SysAddr::SysAddr(): + size(sizeof(sockaddr_storage)) { - return fill_sockaddr(reinterpret_cast(sa)); + addr.ss_family = AF_UNSPEC; } } // namespace Net