Ignore:
File:
1 edited

Legend:

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

    ra2e3ee6 r05bfce7  
    179179        }
    180180
    181         inet_addr_any(&sock->laddr);
     181        sock->laddr.ipv4 = TCP_IPV4_ANY;
    182182        sock->lconn = NULL;
    183183        sock->backlog = 0;
     
    314314        log_msg(LOG_DEFAULT, LVL_DEBUG, " - open connections");
    315315       
    316         inet_addr_any(&lsocket.addr);
     316        lsocket.addr.ipv4 = TCP_IPV4_ANY;
    317317        lsocket.port = sock_core->port;
    318        
    319         inet_addr_any(&fsocket.addr);
     318        fsocket.addr.ipv4 = TCP_IPV4_ANY;
    320319        fsocket.port = TCP_PORT_ANY;
    321320       
     
    397396        fibril_mutex_lock(&socket->lock);
    398397
    399         if (inet_addr_is_any(&socket->laddr)) {
     398        if (socket->laddr.ipv4 == TCP_IPV4_ANY) {
    400399                /* Determine local IP address */
    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);
     400                inet_addr_t loc_addr, rem_addr;
     401
     402                rem_addr.ipv4 = uint32_t_be2host(addr->sin_addr.s_addr);
    406403                rc = inet_get_srcaddr(&rem_addr, 0, &loc_addr);
    407404                if (rc != EOK) {
     
    412409                        return;
    413410                }
    414                
    415                 socket->laddr = loc_addr;
    416         }
    417        
    418         lsocket.addr = socket->laddr;
     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;
    419417        lsocket.port = sock_core->port;
    420        
    421         inet_addr_unpack(uint32_t_be2host(addr->sin_addr.s_addr),
    422             &fsocket.addr);
     418        fsocket.addr.ipv4 = uint32_t_be2host(addr->sin_addr.s_addr);
    423419        fsocket.port = uint16_t_be2host(addr->sin_port);
    424420
     
    511507        /* Replenish listening connection */
    512508
    513         inet_addr_any(&lsocket.addr);
     509        lsocket.addr.ipv4 = TCP_IPV4_ANY;
    514510        lsocket.port = sock_core->port;
    515        
    516         inet_addr_any(&fsocket.addr);
     511        fsocket.addr.ipv4 = TCP_IPV4_ANY;
    517512        fsocket.port = TCP_PORT_ANY;
    518513
     
    733728
    734729        if (IPC_GET_IMETHOD(call) == NET_SOCKET_RECVFROM) {
    735                 /* Fill address */
     730                /* Fill addr */
    736731                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                
    747732                addr.sin_family = AF_INET;
    748                 addr.sin_addr.s_addr = host2uint32_t_be(rsock_addr);
     733                addr.sin_addr.s_addr = host2uint32_t_be(rsock->addr.ipv4);
    749734                addr.sin_port = host2uint16_t_be(rsock->port);
    750735
Note: See TracChangeset for help on using the changeset viewer.