Changeset 157 for trunk/src


Ignore:
Timestamp:
Sep 4, 2009, 2:06:32 AM (16 years ago)
Author:
Dmitry A. Kuminov
Message:

network: Implemented QLocalServer/QLocalSocket/QNativeSocketEngine OS/2 bits (basically a copy of the Unix port with IPv6 stuff removed).

Location:
trunk/src/network/socket
Files:
1 edited
3 copied

Legend:

Unmodified
Added
Removed
  • trunk/src/network/socket/qlocalserver_os2.cpp

    r88 r157  
    33** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
    44** Contact: Qt Software Information ([email protected])
     5
     6
    57**
    68** This file is part of the QtNetwork module of the Qt Toolkit.
  • trunk/src/network/socket/qlocalsocket_os2.cpp

    r88 r157  
    33** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
    44** Contact: Qt Software Information ([email protected])
     5
     6
    57**
    68** This file is part of the QtNetwork module of the Qt Toolkit.
  • trunk/src/network/socket/qnativesocketengine_os2.cpp

    r88 r157  
    33** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
    44** Contact: Qt Software Information ([email protected])
     5
     6
    57**
    68** This file is part of the QtNetwork module of the Qt Toolkit.
     
    5052#include <errno.h>
    5153#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>
    6155
    6256#if defined QNATIVESOCKETENGINE_DEBUG
     
    117111static inline void qt_socket_getPortAndAddress(struct sockaddr *sa, quint16 *port, QHostAddress *addr)
    118112{
    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_IPV6IFNAME
    129             char scopeid[IFNAMSIZ];
    130             if (::if_indextoname(sa6->sin6_scope_id, scopeid) > 0) {
    131                 addr->setScopeId(QLatin1String(scopeid));
    132             } else
    133 #endif
    134             addr->setScopeId(QString::number(sa6->sin6_scope_id));
    135         }
    136         if (port)
    137             *port = ntohs(sa6->sin6_port);
    138         return;
    139     }
    140 #endif
    141113    struct sockaddr_in *sa4 = (struct sockaddr_in *)sa;
    142114    if (port)
     
    157129                                         QAbstractSocket::NetworkLayerProtocol socketProtocol)
    158130{
    159 #ifndef QT_NO_IPV6
    160     int protocol = (socketProtocol == QAbstractSocket::IPv6Protocol) ? AF_INET6 : AF_INET;
    161 #else
    162131    Q_UNUSED(socketProtocol);
    163132    int protocol = AF_INET;
    164 #endif
    165133    int type = (socketType == QAbstractSocket::UdpSocket) ? SOCK_DGRAM : SOCK_STREAM;
    166134    int socket = qt_socket_socket(protocol, type, 0);
     
    295263    QT_SOCKLEN_T sockAddrSize = 0;
    296264
    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_IPV6IFNAME
    305         sockAddrIPv6.sin6_scope_id = ::if_nametoindex(addr.scopeId().toLatin1().data());
    306 #else
    307         sockAddrIPv6.sin6_scope_id = addr.scopeId().toInt();
    308 #endif
    309         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     } else
    315 #if 0
    316     {}
    317 #endif
    318 #endif
    319265    if (addr.protocol() == QAbstractSocket::IPv4Protocol) {
    320266        memset(&sockAddrIPv4, 0, sizeof(sockAddrIPv4));
     
    403349    QT_SOCKLEN_T sockAddrSize = 0;
    404350
    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    }
    433361
    434362    int bindResult = QT_SOCKET_BIND(socketDescriptor, sockAddrPtr, sockAddrSize);
     
    537465{
    538466    // 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 #else
    544467    struct sockaddr storage;
    545 #endif
    546468    sockaddr *storagePtr = reinterpret_cast<sockaddr *>(&storage);
    547469    storagePtr->sa_family = 0;
     
    599521                                                    QHostAddress *address, quint16 *port)
    600522{
    601 #if !defined(QT_NO_IPV6)
    602     struct sockaddr_storage aa;
    603 #else
    604523    struct sockaddr_in aa;
    605 #endif
    606524    memset(&aa, 0, sizeof(aa));
    607525    QT_SOCKLEN_T sz;
     
    638556    QT_SOCKLEN_T sockAddrSize = 0;
    639557
    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     } else
    652 #endif
    653558    if (host.protocol() == QAbstractSocket::IPv4Protocol) {
    654559        memset(&sockAddrIPv4, 0, sizeof(sockAddrIPv4));
     
    698603        return false;
    699604
    700 #if !defined(QT_NO_IPV6)
    701     struct sockaddr_storage sa;
    702 #else
    703605    struct sockaddr_in sa;
    704 #endif
    705606    struct sockaddr *sockAddrPtr = (struct sockaddr *) &sa;
    706607    QT_SOCKLEN_T sockAddrSize = sizeof(sa);
     
    716617            socketProtocol = QAbstractSocket::IPv4Protocol;
    717618            break;
    718 #if !defined (QT_NO_IPV6)
    719         case AF_INET6:
    720             socketProtocol = QAbstractSocket::IPv6Protocol;
    721             break;
    722 #endif
    723619        default:
    724620            socketProtocol = QAbstractSocket::UnknownNetworkLayerProtocol;
  • trunk/src/network/socket/socket.pri

    r2 r157  
    3535                socket/qlocalserver_win.cpp
    3636
     37
     38
     39
     40
    3741wince*: {
    3842    SOURCES -= socket/qlocalsocket_win.cpp \
Note: See TracChangeset for help on using the changeset viewer.