Changeset 0ac2158 in mainline for uspace/srv/net/tl/tcp/sock.c
- Timestamp:
- 2011-12-08T23:29:06Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- d9e14fa4
- Parents:
- 5f9ecd3
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/net/tl/tcp/sock.c
r5f9ecd3 r0ac2158 39 39 #include <errno.h> 40 40 #include <io/log.h> 41 #include <ip_client.h> 41 42 #include <ipc/socket.h> 42 43 #include <net/modules.h> … … 106 107 107 108 sock->client = client; 109 sock->laddr.ipv4 = TCP_IPV4_ANY; 108 110 109 111 sock_id = SOCKET_GET_SOCKET_ID(call); … … 211 213 tcp_sockdata_t *socket; 212 214 tcp_error_t trc; 215 tcp_sock_t lsocket; 213 216 tcp_sock_t fsocket; 214 uint16_t lport; 217 device_id_t dev_id; 218 tcp_phdr_t *phdr; 219 size_t phdr_len; 215 220 216 221 log_msg(LVL_DEBUG, "tcp_sock_connect()"); … … 243 248 } 244 249 245 lport = sock_core->port; 250 if (socket->laddr.ipv4 == TCP_IPV4_ANY) { 251 /* Find route to determine local IP address. */ 252 rc = ip_get_route_req(ip_sess, IPPROTO_TCP, 253 (struct sockaddr *)addr, sizeof(*addr), &dev_id, 254 (void **)&phdr, &phdr_len); 255 if (rc != EOK) { 256 async_answer_0(callid, rc); 257 log_msg(LVL_DEBUG, "tcp_transmit_connect: Failed to find route."); 258 return; 259 } 260 261 socket->laddr.ipv4 = uint32_t_be2host(phdr->src_addr); 262 log_msg(LVL_DEBUG, "Local IP address is %x", socket->laddr.ipv4); 263 free(phdr); 264 } 265 266 lsocket.addr.ipv4 = socket->laddr.ipv4; 267 lsocket.port = sock_core->port; 246 268 fsocket.addr.ipv4 = uint32_t_be2host(addr->sin_addr.s_addr); 247 269 fsocket.port = uint16_t_be2host(addr->sin_port); 248 270 249 trc = tcp_uc_open( lport, &fsocket, ap_active, &socket->conn);271 trc = tcp_uc_open(&lsocket, &fsocket, ap_active, &socket->conn); 250 272 251 273 if (socket->conn != NULL) … … 280 302 tcp_sockdata_t *asocket; 281 303 tcp_error_t trc; 304 tcp_sock_t lsocket; 282 305 tcp_sock_t fsocket; 283 306 tcp_conn_t *conn; … … 305 328 log_msg(LVL_DEBUG, " - open connection"); 306 329 330 lsocket.addr.ipv4 = TCP_IPV4_ANY; 331 lsocket.port = sock_core->port; 307 332 fsocket.addr.ipv4 = TCP_IPV4_ANY; 308 333 fsocket.port = TCP_PORT_ANY; 309 334 310 trc = tcp_uc_open( sock_core->port, &fsocket, ap_passive, &conn);335 trc = tcp_uc_open(&lsocket, &fsocket, ap_passive, &conn); 311 336 if (conn != NULL) 312 337 conn->name = (char *)"S";
Note:
See TracChangeset
for help on using the changeset viewer.