]> git.sesse.net Git - cubemap/blobdiff - sa_compare.cpp
Add a listen statement to listen on only specific IP addresses, in addition to the...
[cubemap] / sa_compare.cpp
diff --git a/sa_compare.cpp b/sa_compare.cpp
new file mode 100644 (file)
index 0000000..aff5d2f
--- /dev/null
@@ -0,0 +1,17 @@
+#include "sa_compare.h"
+
+#include <arpa/inet.h>
+#include <assert.h>
+#include <string.h>
+
+bool Sockaddr6Compare::operator() (const sockaddr_in6 &a, const sockaddr_in6 &b) const
+{
+       assert(a.sin6_family == AF_INET6);
+       assert(b.sin6_family == AF_INET6);
+       int addr_cmp = memcmp(&a.sin6_addr, &b.sin6_addr, sizeof(a.sin6_addr));
+       if (addr_cmp == 0) {
+               return (ntohs(a.sin6_port) < ntohs(b.sin6_port));
+       } else {
+               return (addr_cmp < 0);
+       }
+}