Changeset a2e3ee6 in mainline for uspace/srv/net/tcp/sock.c


Ignore:
Timestamp:
2013-06-20T16:45:58Z (11 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
08bb73b
Parents:
19a4f73
Message:

use new network address infrastructure (towards IPv6 support)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/tcp/sock.c

    r19a4f73 ra2e3ee6  
    179179        }
    180180
    181         sock->laddr.ipv4 = TCP_IPV4_ANY;
     181        inet_addr_any(&sock->laddr);
    182182        sock->lconn = NULL;
    183183        sock->backlog = 0;
     
    314314        log_msg(LOG_DEFAULT, LVL_DEBUG, " - open connections");
    315315       
    316         lsocket.addr.ipv4 = TCP_IPV4_ANY;
     316        inet_addr_any(&lsocket.addr);
    317317        lsocket.port = sock_core->port;
    318         fsocket.addr.ipv4 = TCP_IPV4_ANY;
     318       
     319        inet_addr_any(&fsocket.addr);
    319320        fsocket.port = TCP_PORT_ANY;
    320321       
     
    396397        fibril_mutex_lock(&socket->lock);
    397398
    398         if (socket->laddr.ipv4 == TCP_IPV4_ANY) {
     399        if (inet_addr_is_any(&socket->laddr)) {
    399400                /* Determine local IP address */
    400                 inet_addr_t loc_addr, rem_addr;
    401 
    402                 rem_addr.ipv4 = uint32_t_be2host(addr->sin_addr.s_addr);
     401                inet_addr_t loc_addr;
     402                inet_addr_t rem_addr;
     403               
     404                inet_addr_unpack(uint32_t_be2host(addr->sin_addr.s_addr),
     405                    &rem_addr);
    403406                rc = inet_get_srcaddr(&rem_addr, 0, &loc_addr);
    404407                if (rc != EOK) {
     
    409412                        return;
    410413                }
    411 
    412                 socket->laddr.ipv4 = loc_addr.ipv4;
    413                 log_msg(LOG_DEFAULT, LVL_DEBUG, "Local IP address is %x", socket->laddr.ipv4);
    414         }
    415 
    416         lsocket.addr.ipv4 = socket->laddr.ipv4;
     414               
     415                socket->laddr = loc_addr;
     416        }
     417       
     418        lsocket.addr = socket->laddr;
    417419        lsocket.port = sock_core->port;
    418         fsocket.addr.ipv4 = uint32_t_be2host(addr->sin_addr.s_addr);
     420       
     421        inet_addr_unpack(uint32_t_be2host(addr->sin_addr.s_addr),
     422            &fsocket.addr);
    419423        fsocket.port = uint16_t_be2host(addr->sin_port);
    420424
     
    507511        /* Replenish listening connection */
    508512
    509         lsocket.addr.ipv4 = TCP_IPV4_ANY;
     513        inet_addr_any(&lsocket.addr);
    510514        lsocket.port = sock_core->port;
    511         fsocket.addr.ipv4 = TCP_IPV4_ANY;
     515       
     516        inet_addr_any(&fsocket.addr);
    512517        fsocket.port = TCP_PORT_ANY;
    513518
     
    728733
    729734        if (IPC_GET_IMETHOD(call) == NET_SOCKET_RECVFROM) {
    730                 /* Fill addr */
     735                /* Fill address */
    731736                rsock = &socket->conn->ident.foreign;
     737               
     738                uint32_t rsock_addr;
     739                int rc = inet_addr_pack(&rsock->addr, &rsock_addr);
     740                if (rc != EOK) {
     741                        fibril_mutex_unlock(&socket->recv_buffer_lock);
     742                        fibril_mutex_unlock(&socket->lock);
     743                        async_answer_0(callid, rc);
     744                        return;
     745                }
     746               
    732747                addr.sin_family = AF_INET;
    733                 addr.sin_addr.s_addr = host2uint32_t_be(rsock->addr.ipv4);
     748                addr.sin_addr.s_addr = host2uint32_t_be(rsock_addr);
    734749                addr.sin_port = host2uint16_t_be(rsock->port);
    735750
Note: See TracChangeset for help on using the changeset viewer.