Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mumble-voip/mumble.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src/Net.h
diff options
context:
space:
mode:
authorThorvald Natvig <slicer@users.sourceforge.net>2009-05-15 19:24:27 +0400
committerThorvald Natvig <slicer@users.sourceforge.net>2009-05-15 19:24:27 +0400
commita98d45a39312f28e9ec5ec5397f025f58a8d12c1 (patch)
treeebd63a339b9e796147b6a13b5d4dcdcb191da09e /src/Net.h
parent9f7ef74e4a3ba022e0cb634d081f4cb460f64ead (diff)
Faster quint64 based netaddress handling
Diffstat (limited to 'src/Net.h')
-rw-r--r--src/Net.h89
1 files changed, 89 insertions, 0 deletions
diff --git a/src/Net.h b/src/Net.h
new file mode 100644
index 000000000..c878f0c68
--- /dev/null
+++ b/src/Net.h
@@ -0,0 +1,89 @@
+/* Copyright (C) 2005-2009, Thorvald Natvig <thorvald@natvig.com>
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ - Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ - Neither the name of the Mumble Developers nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef _NET_H
+#define _NET_H
+
+#include "murmur_pch.h"
+
+struct HostAddress {
+ union {
+ Q_IPV6ADDR qip6;
+ quint16 shorts[8];
+ quint32 hash[4];
+ quint64 addr[2];
+ };
+
+ HostAddress();
+ HostAddress(const Q_IPV6ADDR &);
+ HostAddress(const std::string &);
+ HostAddress(const QHostAddress &);
+ HostAddress(const QByteArray &);
+
+ bool isV6() const;
+ bool isValid() const;
+
+ bool operator < (const HostAddress &) const;
+ bool operator == (const HostAddress &) const;
+
+ bool match(const HostAddress &, int) const;
+
+ std::string toStdString() const;
+ QHostAddress toAddress() const;
+ QByteArray toByteArray() const;
+};
+
+quint32 qHash(const HostAddress &);
+
+struct Ban {
+ HostAddress haAddress;
+ int iMask;
+ QString qsUsername;
+ QString qsHash;
+ QString qsReason;
+ QDateTime qdtStart;
+ unsigned int iDuration;
+ bool isExpired() const;
+ bool isValid() const;
+ bool operator < (const Ban &) const;
+ bool operator == (const Ban &) const;
+};
+
+#if __BYTE_ORDER == __BIG_ENDIAN
+#define SWAP64(x) (x)
+#else
+#ifdef __x86_64__
+#define SWAP64(x) ({register quint64 __out, __in = (x); __asm__("bswap %q0" : "=r"(__out) : "0"(__in)); __out;})
+#else
+#define SWAP64(x) qbswap<quint64>(x)
+#endif
+#endif
+
+#endif