-#ifdef WIN32
-#include <winsock2.h>
-#include <ws2tcpip.h>
-#else
-#include <netinet/in.h>
-#endif
-#include <msp/strings/format.h>
#include "inet6.h"
+#include "platform_api.h"
+#include <msp/strings/format.h>
+#include <msp/strings/utils.h>
#include "sockaddr_private.h"
using namespace std;
namespace Msp {
namespace Net {
-Inet6Addr::Inet6Addr():
- port(0)
-{
- fill(addr, addr+16, 0);
-}
-
Inet6Addr::Inet6Addr(const SysAddr &sa)
{
const sockaddr_in6 &sai6 = reinterpret_cast<const sockaddr_in6 &>(sa.addr);
port = htons(sai6.sin6_port);
}
+Inet6Addr Inet6Addr::wildcard(unsigned port)
+{
+ Inet6Addr addr;
+ addr.port = port;
+ return addr;
+}
+
+Inet6Addr Inet6Addr::localhost(unsigned port)
+{
+ Inet6Addr addr;
+ addr.addr[15] = 1;
+ addr.port = port;
+ return addr;
+}
+
SockAddr::SysAddr Inet6Addr::to_sys() const
{
SysAddr sa;
string result = "[";
for(unsigned i=0; i<16; i+=2)
{
- unsigned short part = (addr[i]<<8) | addr[i+1];
if(i>0)
result += ':';
+ unsigned short part = (addr[i]<<8) | addr[i+1];
result += format("%x", part);
}
result += ']';