2 #include "platform_api.h"
3 #include <msp/strings/format.h>
4 #include <msp/strings/utils.h>
5 #include "sockaddr_private.h"
12 Inet6Addr::Inet6Addr(const SysAddr &sa)
14 const sockaddr_in6 &sai6 = reinterpret_cast<const sockaddr_in6 &>(sa.addr);
15 std::copy(sai6.sin6_addr.s6_addr, sai6.sin6_addr.s6_addr+16, addr);
16 port = htons(sai6.sin6_port);
19 Inet6Addr Inet6Addr::wildcard(unsigned port)
26 Inet6Addr Inet6Addr::localhost(unsigned port)
34 SockAddr::SysAddr Inet6Addr::to_sys() const
37 sa.size = sizeof(sockaddr_in6);
38 sockaddr_in6 &sai6 = reinterpret_cast<sockaddr_in6 &>(sa.addr);
39 sai6.sin6_family = AF_INET6;
40 std::copy(addr, addr+16, sai6.sin6_addr.s6_addr);
41 sai6.sin6_port = htons(port);
42 sai6.sin6_flowinfo = 0;
43 sai6.sin6_scope_id = 0;
48 string Inet6Addr::str() const
51 for(unsigned i=0; i<16; i+=2)
55 unsigned short part = (addr[i]<<8) | addr[i+1];
56 result += format("%x", part);
60 result += format(":%d", port);