- Timestamp:
- Sep 4, 2009, 2:06:32 AM (16 years ago)
- Location:
- trunk/src/network/socket
- Files:
-
- 1 edited
- 3 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/network/socket/qlocalserver_os2.cpp
r88 r157 3 3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). 4 4 ** Contact: Qt Software Information ([email protected]) 5 6 5 7 ** 6 8 ** This file is part of the QtNetwork module of the Qt Toolkit. -
trunk/src/network/socket/qlocalsocket_os2.cpp
r88 r157 3 3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). 4 4 ** Contact: Qt Software Information ([email protected]) 5 6 5 7 ** 6 8 ** This file is part of the QtNetwork module of the Qt Toolkit. -
trunk/src/network/socket/qnativesocketengine_os2.cpp
r88 r157 3 3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). 4 4 ** Contact: Qt Software Information ([email protected]) 5 6 5 7 ** 6 8 ** This file is part of the QtNetwork module of the Qt Toolkit. … … 50 52 #include <errno.h> 51 53 #include <fcntl.h> 52 #ifndef QT_NO_IPV6IFNAME 53 #include <net/if.h> 54 #endif 55 #ifndef QT_NO_IPV6IFNAME 56 #include <net/if.h> 57 #endif 58 #ifdef QT_LINUXBASE 59 #include <arpa/inet.h> 60 #endif 54 #include <sys/filio.h> 61 55 62 56 #if defined QNATIVESOCKETENGINE_DEBUG … … 117 111 static inline void qt_socket_getPortAndAddress(struct sockaddr *sa, quint16 *port, QHostAddress *addr) 118 112 { 119 #if !defined(QT_NO_IPV6)120 if (sa->sa_family == AF_INET6) {121 struct sockaddr_in6 *sa6 = (struct sockaddr_in6 *)sa;122 Q_IPV6ADDR tmp;123 memcpy(&tmp, &sa6->sin6_addr.s6_addr, sizeof(tmp));124 if (addr) {125 QHostAddress tmpAddress;126 tmpAddress.setAddress(tmp);127 *addr = tmpAddress;128 #ifndef QT_NO_IPV6IFNAME129 char scopeid[IFNAMSIZ];130 if (::if_indextoname(sa6->sin6_scope_id, scopeid) > 0) {131 addr->setScopeId(QLatin1String(scopeid));132 } else133 #endif134 addr->setScopeId(QString::number(sa6->sin6_scope_id));135 }136 if (port)137 *port = ntohs(sa6->sin6_port);138 return;139 }140 #endif141 113 struct sockaddr_in *sa4 = (struct sockaddr_in *)sa; 142 114 if (port) … … 157 129 QAbstractSocket::NetworkLayerProtocol socketProtocol) 158 130 { 159 #ifndef QT_NO_IPV6160 int protocol = (socketProtocol == QAbstractSocket::IPv6Protocol) ? AF_INET6 : AF_INET;161 #else162 131 Q_UNUSED(socketProtocol); 163 132 int protocol = AF_INET; 164 #endif165 133 int type = (socketType == QAbstractSocket::UdpSocket) ? SOCK_DGRAM : SOCK_STREAM; 166 134 int socket = qt_socket_socket(protocol, type, 0); … … 295 263 QT_SOCKLEN_T sockAddrSize = 0; 296 264 297 #if !defined(QT_NO_IPV6)298 struct sockaddr_in6 sockAddrIPv6;299 300 if (addr.protocol() == QAbstractSocket::IPv6Protocol) {301 memset(&sockAddrIPv6, 0, sizeof(sockAddrIPv6));302 sockAddrIPv6.sin6_family = AF_INET6;303 sockAddrIPv6.sin6_port = htons(port);304 #ifndef QT_NO_IPV6IFNAME305 sockAddrIPv6.sin6_scope_id = ::if_nametoindex(addr.scopeId().toLatin1().data());306 #else307 sockAddrIPv6.sin6_scope_id = addr.scopeId().toInt();308 #endif309 Q_IPV6ADDR ip6 = addr.toIPv6Address();310 memcpy(&sockAddrIPv6.sin6_addr.s6_addr, &ip6, sizeof(ip6));311 312 sockAddrSize = sizeof(sockAddrIPv6);313 sockAddrPtr = (struct sockaddr *) &sockAddrIPv6;314 } else315 #if 0316 {}317 #endif318 #endif319 265 if (addr.protocol() == QAbstractSocket::IPv4Protocol) { 320 266 memset(&sockAddrIPv4, 0, sizeof(sockAddrIPv4)); … … 403 349 QT_SOCKLEN_T sockAddrSize = 0; 404 350 405 #if !defined(QT_NO_IPV6) 406 struct sockaddr_in6 sockAddrIPv6; 407 408 if (address.protocol() == QAbstractSocket::IPv6Protocol) { 409 memset(&sockAddrIPv6, 0, sizeof(sockAddrIPv6)); 410 sockAddrIPv6.sin6_family = AF_INET6; 411 sockAddrIPv6.sin6_port = htons(port); 412 #ifndef QT_NO_IPV6IFNAME 413 sockAddrIPv6.sin6_scope_id = ::if_nametoindex(address.scopeId().toLatin1().data()); 414 #else 415 sockAddrIPv6.sin6_scope_id = address.scopeId().toInt(); 416 #endif 417 Q_IPV6ADDR tmp = address.toIPv6Address(); 418 memcpy(&sockAddrIPv6.sin6_addr.s6_addr, &tmp, sizeof(tmp)); 419 sockAddrSize = sizeof(sockAddrIPv6); 420 sockAddrPtr = (struct sockaddr *) &sockAddrIPv6; 421 } else 422 #endif 423 if (address.protocol() == QAbstractSocket::IPv4Protocol) { 424 memset(&sockAddrIPv4, 0, sizeof(sockAddrIPv4)); 425 sockAddrIPv4.sin_family = AF_INET; 426 sockAddrIPv4.sin_port = htons(port); 427 sockAddrIPv4.sin_addr.s_addr = htonl(address.toIPv4Address()); 428 sockAddrSize = sizeof(sockAddrIPv4); 429 sockAddrPtr = (struct sockaddr *) &sockAddrIPv4; 430 } else { 431 // unreachable 432 } 351 if (address.protocol() == QAbstractSocket::IPv4Protocol) { 352 memset(&sockAddrIPv4, 0, sizeof(sockAddrIPv4)); 353 sockAddrIPv4.sin_family = AF_INET; 354 sockAddrIPv4.sin_port = htons(port); 355 sockAddrIPv4.sin_addr.s_addr = htonl(address.toIPv4Address()); 356 sockAddrSize = sizeof(sockAddrIPv4); 357 sockAddrPtr = (struct sockaddr *) &sockAddrIPv4; 358 } else { 359 // unreachable 360 } 433 361 434 362 int bindResult = QT_SOCKET_BIND(socketDescriptor, sockAddrPtr, sockAddrSize); … … 537 465 { 538 466 // Create a sockaddr struct and reset its port number. 539 #if !defined(QT_NO_IPV6)540 struct sockaddr_storage storage;541 sockaddr_in6 *storagePtrIPv6 = reinterpret_cast<sockaddr_in6 *>(&storage);542 storagePtrIPv6->sin6_port = 0;543 #else544 467 struct sockaddr storage; 545 #endif546 468 sockaddr *storagePtr = reinterpret_cast<sockaddr *>(&storage); 547 469 storagePtr->sa_family = 0; … … 599 521 QHostAddress *address, quint16 *port) 600 522 { 601 #if !defined(QT_NO_IPV6)602 struct sockaddr_storage aa;603 #else604 523 struct sockaddr_in aa; 605 #endif606 524 memset(&aa, 0, sizeof(aa)); 607 525 QT_SOCKLEN_T sz; … … 638 556 QT_SOCKLEN_T sockAddrSize = 0; 639 557 640 #if !defined(QT_NO_IPV6)641 struct sockaddr_in6 sockAddrIPv6;642 if (host.protocol() == QAbstractSocket::IPv6Protocol) {643 memset(&sockAddrIPv6, 0, sizeof(sockAddrIPv6));644 sockAddrIPv6.sin6_family = AF_INET6;645 sockAddrIPv6.sin6_port = htons(port);646 647 Q_IPV6ADDR tmp = host.toIPv6Address();648 memcpy(&sockAddrIPv6.sin6_addr.s6_addr, &tmp, sizeof(tmp));649 sockAddrSize = sizeof(sockAddrIPv6);650 sockAddrPtr = (struct sockaddr *)&sockAddrIPv6;651 } else652 #endif653 558 if (host.protocol() == QAbstractSocket::IPv4Protocol) { 654 559 memset(&sockAddrIPv4, 0, sizeof(sockAddrIPv4)); … … 698 603 return false; 699 604 700 #if !defined(QT_NO_IPV6)701 struct sockaddr_storage sa;702 #else703 605 struct sockaddr_in sa; 704 #endif705 606 struct sockaddr *sockAddrPtr = (struct sockaddr *) &sa; 706 607 QT_SOCKLEN_T sockAddrSize = sizeof(sa); … … 716 617 socketProtocol = QAbstractSocket::IPv4Protocol; 717 618 break; 718 #if !defined (QT_NO_IPV6)719 case AF_INET6:720 socketProtocol = QAbstractSocket::IPv6Protocol;721 break;722 #endif723 619 default: 724 620 socketProtocol = QAbstractSocket::UnknownNetworkLayerProtocol; -
trunk/src/network/socket/socket.pri
r2 r157 35 35 socket/qlocalserver_win.cpp 36 36 37 38 39 40 37 41 wince*: { 38 42 SOURCES -= socket/qlocalsocket_win.cpp \
Note:
See TracChangeset
for help on using the changeset viewer.