QHostAddress: remove our own sockaddr_in6

IPv6 is required now.

Change-Id: I209fcd5dbc2b4e5381cffffd14df2694bd5a92c8
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
This commit is contained in:
Thiago Macieira 2017-08-28 16:33:40 -07:00
parent 1be1ed014b
commit 2a131b94db

View File

@ -44,6 +44,7 @@
#include "qdebug.h" #include "qdebug.h"
#if defined(Q_OS_WIN) #if defined(Q_OS_WIN)
# include <winsock2.h> # include <winsock2.h>
# include <ws2tcpip.h>
#else #else
# include <netinet/in.h> # include <netinet/in.h>
#endif #endif
@ -63,36 +64,6 @@
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
#ifdef Q_OS_WIN
// sockaddr_in6 size changed between old and new SDK
// Only the new version is the correct one, so always
// use this structure.
#if defined(Q_OS_WINRT)
# if !defined(u_char)
# define u_char unsigned char
# endif
# if !defined(u_short)
# define u_short unsigned short
# endif
# if !defined(u_long)
# define u_long unsigned long
# endif
#endif
struct qt_in6_addr {
u_char qt_s6_addr[16];
};
typedef struct {
short sin6_family; /* AF_INET6 */
u_short sin6_port; /* Transport level port number */
u_long sin6_flowinfo; /* IPv6 flow information */
struct qt_in6_addr sin6_addr; /* IPv6 address */
u_long sin6_scope_id; /* set of interfaces for a scope */
} qt_sockaddr_in6;
#else
#define qt_sockaddr_in6 sockaddr_in6
#define qt_s6_addr s6_addr
#endif
class QHostAddressPrivate : public QSharedData class QHostAddressPrivate : public QSharedData
{ {
@ -495,7 +466,7 @@ QHostAddress::QHostAddress(const struct sockaddr *sockaddr)
if (sockaddr->sa_family == AF_INET) if (sockaddr->sa_family == AF_INET)
setAddress(htonl(((const sockaddr_in *)sockaddr)->sin_addr.s_addr)); setAddress(htonl(((const sockaddr_in *)sockaddr)->sin_addr.s_addr));
else if (sockaddr->sa_family == AF_INET6) else if (sockaddr->sa_family == AF_INET6)
setAddress(((const qt_sockaddr_in6 *)sockaddr)->sin6_addr.qt_s6_addr); setAddress(((const sockaddr_in6 *)sockaddr)->sin6_addr.s6_addr);
#else #else
Q_UNUSED(sockaddr) Q_UNUSED(sockaddr)
#endif #endif
@ -718,7 +689,7 @@ void QHostAddress::setAddress(const struct sockaddr *sockaddr)
if (sockaddr->sa_family == AF_INET) if (sockaddr->sa_family == AF_INET)
setAddress(htonl(((const sockaddr_in *)sockaddr)->sin_addr.s_addr)); setAddress(htonl(((const sockaddr_in *)sockaddr)->sin_addr.s_addr));
else if (sockaddr->sa_family == AF_INET6) else if (sockaddr->sa_family == AF_INET6)
setAddress(((const qt_sockaddr_in6 *)sockaddr)->sin6_addr.qt_s6_addr); setAddress(((const sockaddr_in6 *)sockaddr)->sin6_addr.s6_addr);
#else #else
Q_UNUSED(sockaddr) Q_UNUSED(sockaddr)
#endif #endif