+#include "sockaddr.h"
#include <stdexcept>
+#include "platform_api.h"
#include "inet.h"
#include "inet6.h"
#include "sockaddr_private.h"
+#include "unix.h"
using namespace std;
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