]> git.tdb.fi Git - libs/net.git/blobdiff - source/net/inet6.cpp
Add a dynamic receiver class for more flexible packet handling
[libs/net.git] / source / net / inet6.cpp
index 77d757082379f70e713d7587bbf0d61df675ff75..1b8fc39ce2628bd793a2148723e2e33868a1ad64 100644 (file)
@@ -1,6 +1,7 @@
+#include "inet6.h"
 #include "platform_api.h"
 #include <msp/strings/format.h>
-#include "inet6.h"
+#include <msp/strings/utils.h>
 #include "sockaddr_private.h"
 
 using namespace std;
@@ -8,12 +9,6 @@ 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);
@@ -21,6 +16,21 @@ Inet6Addr::Inet6Addr(const SysAddr &sa)
        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;
@@ -40,9 +50,9 @@ string Inet6Addr::str() const
        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 += ']';