From 3bfba054cb310d06543b08b5efb88de9b34a992e Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 16 Mar 2015 18:59:49 -0700 Subject: Add QHostAddress::isMulticast This complements QHostAddress::isLoopback. The only missing check now is for the "Any" address types, though operator== is quite fast nowadays. Change-Id: Iee8cbc07c4434ce9b560ffff13cc2691e15014b6 Reviewed-by: Richard J. Moore --- src/network/kernel/qhostaddress.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/network/kernel/qhostaddress.cpp') diff --git a/src/network/kernel/qhostaddress.cpp b/src/network/kernel/qhostaddress.cpp index 3d51ab4025..579567023e 100644 --- a/src/network/kernel/qhostaddress.cpp +++ b/src/network/kernel/qhostaddress.cpp @@ -1090,6 +1090,22 @@ bool QHostAddress::isLoopback() const return false; } +/*! + \since 5.6 + + Returns \c true if the address is an IPv4 or IPv6 multicast address, \c + false otherwise. +*/ +bool QHostAddress::isMulticast() const +{ + QT_ENSURE_PARSED(this); + if ((d->a & 0xF0000000) == 0xE0000000) + return true; // 224.0.0.0-239.255.255.255 (including v4-mapped IPv6 addresses) + if (d->protocol == QAbstractSocket::IPv6Protocol) + return d->a6.c[0] == 0xff; + return false; +} + #ifndef QT_NO_DEBUG_STREAM QDebug operator<<(QDebug d, const QHostAddress &address) { -- cgit v1.2.3