diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/network/kernel/qhostaddress.cpp | 35 | ||||
-rw-r--r-- | src/network/kernel/qhostaddress.h | 6 |
2 files changed, 35 insertions, 6 deletions
diff --git a/src/network/kernel/qhostaddress.cpp b/src/network/kernel/qhostaddress.cpp index 9a993392e9..58c0de1f3b 100644 --- a/src/network/kernel/qhostaddress.cpp +++ b/src/network/kernel/qhostaddress.cpp @@ -415,6 +415,19 @@ QHostAddress::QHostAddress(quint8 *ip6Addr) } /*! + \since 5.5 + Constructs a host address object with the IPv6 address \a ip6Addr. + + \a ip6Addr must be a 16-byte array in network byte order (big + endian). +*/ +QHostAddress::QHostAddress(const quint8 *ip6Addr) + : d(new QHostAddressPrivate) +{ + setAddress(ip6Addr); +} + +/*! Constructs a host address object with the IPv6 address \a ip6Addr. */ QHostAddress::QHostAddress(const Q_IPV6ADDR &ip6Addr) @@ -449,9 +462,9 @@ QHostAddress::QHostAddress(const struct sockaddr *sockaddr) { #ifndef Q_OS_WINRT if (sockaddr->sa_family == AF_INET) - setAddress(htonl(((sockaddr_in *)sockaddr)->sin_addr.s_addr)); + setAddress(htonl(((const sockaddr_in *)sockaddr)->sin_addr.s_addr)); else if (sockaddr->sa_family == AF_INET6) - setAddress(((qt_sockaddr_in6 *)sockaddr)->sin6_addr.qt_s6_addr); + setAddress(((const qt_sockaddr_in6 *)sockaddr)->sin6_addr.qt_s6_addr); #else Q_UNUSED(sockaddr) #endif @@ -575,6 +588,20 @@ void QHostAddress::setAddress(quint8 *ip6Addr) /*! \overload + \since 5.5 + + Set the IPv6 address specified by \a ip6Addr. + + \a ip6Addr must be an array of 16 bytes in network byte order + (high-order byte first). +*/ +void QHostAddress::setAddress(const quint8 *ip6Addr) +{ + d->setAddress(ip6Addr); +} + +/*! + \overload Set the IPv6 address specified by \a ip6Addr. */ @@ -610,9 +637,9 @@ void QHostAddress::setAddress(const struct sockaddr *sockaddr) #ifndef Q_OS_WINRT clear(); if (sockaddr->sa_family == AF_INET) - setAddress(htonl(((sockaddr_in *)sockaddr)->sin_addr.s_addr)); + setAddress(htonl(((const sockaddr_in *)sockaddr)->sin_addr.s_addr)); else if (sockaddr->sa_family == AF_INET6) - setAddress(((qt_sockaddr_in6 *)sockaddr)->sin6_addr.qt_s6_addr); + setAddress(((const qt_sockaddr_in6 *)sockaddr)->sin6_addr.qt_s6_addr); #else Q_UNUSED(sockaddr) #endif diff --git a/src/network/kernel/qhostaddress.h b/src/network/kernel/qhostaddress.h index de3a79278e..0c2229c334 100644 --- a/src/network/kernel/qhostaddress.h +++ b/src/network/kernel/qhostaddress.h @@ -75,7 +75,8 @@ public: QHostAddress(); explicit QHostAddress(quint32 ip4Addr); - explicit QHostAddress(quint8 *ip6Addr); + explicit QHostAddress(quint8 *ip6Addr); // ### Qt 6: remove me + explicit QHostAddress(const quint8 *ip6Addr); explicit QHostAddress(const Q_IPV6ADDR &ip6Addr); explicit QHostAddress(const sockaddr *address); explicit QHostAddress(const QString &address); @@ -87,7 +88,8 @@ public: QHostAddress &operator=(const QString &address); void setAddress(quint32 ip4Addr); - void setAddress(quint8 *ip6Addr); + void setAddress(quint8 *ip6Addr); // ### Qt 6: remove me + void setAddress(const quint8 *ip6Addr); void setAddress(const Q_IPV6ADDR &ip6Addr); void setAddress(const sockaddr *address); bool setAddress(const QString &address); |