X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fnet%2Fsockaddr.cpp;h=a3d3eed306626df06991cbc61f9c14e428a476e5;hb=HEAD;hp=9b41f81b948492dc077920dbe83ea06a80ea8a67;hpb=50e9f9ea7f7385a2c5931fca2b8fb1103078e67c;p=libs%2Fnet.git diff --git a/source/net/sockaddr.cpp b/source/net/sockaddr.cpp index 9b41f81..a3d3eed 100644 --- a/source/net/sockaddr.cpp +++ b/source/net/sockaddr.cpp @@ -1,7 +1,10 @@ +#include "sockaddr.h" #include +#include "platform_api.h" #include "inet.h" #include "inet6.h" #include "sockaddr_private.h" +#include "unix.h" using namespace std; @@ -16,16 +19,42 @@ SockAddr *SockAddr::new_from_sys(const SysAddr &sa) return new InetAddr(sa); case AF_INET6: return new Inet6Addr(sa); + case AF_UNIX: + return new UnixAddr(sa); default: throw invalid_argument("SockAddr::create"); } } -SockAddr::SysAddr::SysAddr(): - size(sizeof(sockaddr_storage)) +SockAddr::SysAddr::SysAddr() { addr.ss_family = AF_UNSPEC; } + +int family_to_sys(Family f) +{ + switch(f) + { + case UNSPEC: return AF_UNSPEC; + case INET: return AF_INET; + case INET6: return AF_INET6; + case UNIX: return AF_UNIX; + default: throw invalid_argument("family_to_sys"); + } +} + +Family family_from_sys(int f) +{ + switch(f) + { + case AF_UNSPEC: return UNSPEC; + case AF_INET: return INET; + case AF_INET6: return INET6; + case AF_UNIX: return UNIX; + default: throw invalid_argument("family_from_sys"); + } +} + } // namespace Net } // namespace Msp