Changeset 02a09ed in mainline for uspace/srv/net/inetsrv/inetsrv.c
- Timestamp:
- 2013-06-28T20:20:03Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 1d24ad3
- Parents:
- edf0d27
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/net/inetsrv/inetsrv.c
redf0d27 r02a09ed 46 46 #include <stdlib.h> 47 47 #include <sys/types.h> 48 48 #include <net/socket_codes.h> 49 49 #include "addrobj.h" 50 50 #include "icmp.h" … … 202 202 log_msg(LOG_DEFAULT, LVL_DEBUG, "inet_get_srcaddr_srv()"); 203 203 204 addr32_t remote_v4 = IPC_GET_ARG1(*call); 205 uint8_t tos = IPC_GET_ARG2(*call); 206 204 207 inet_addr_t remote; 205 inet_addr_unpack(IPC_GET_ARG1(*call), &remote); 206 uint8_t tos = IPC_GET_ARG2(*call); 208 inet_addr_set(remote_v4, &remote); 207 209 208 210 inet_addr_t local; … … 213 215 } 214 216 215 uint32_t local_addr;216 rc = inet_addr_pack(&local, &local_addr);217 if ( rc != EOK) {218 async_answer_0(callid, rc);217 addr32_t local_v4; 218 uint16_t family = inet_addr_get(&local, &local_v4, NULL); 219 if (family != AF_INET) { 220 async_answer_0(callid, EINVAL); 219 221 return; 220 222 } 221 223 222 async_answer_1(callid, rc, (sysarg_t) local_ addr);224 async_answer_1(callid, rc, (sysarg_t) local_v4); 223 225 } 224 226 … … 228 230 log_msg(LOG_DEFAULT, LVL_DEBUG, "inet_send_srv()"); 229 231 232 addr32_t src_v4 = IPC_GET_ARG1(*call); 233 addr32_t dest_v4 = IPC_GET_ARG2(*call); 234 230 235 inet_dgram_t dgram; 231 236 232 inet_addr_ unpack(IPC_GET_ARG1(*call), &dgram.src);233 inet_addr_ unpack(IPC_GET_ARG2(*call), &dgram.dest);237 inet_addr_set(src_v4, &dgram.src); 238 inet_addr_set(dest_v4, &dgram.dest); 234 239 dgram.tos = IPC_GET_ARG3(*call); 235 240 … … 371 376 int inet_ev_recv(inet_client_t *client, inet_dgram_t *dgram) 372 377 { 373 uint32_t src;374 int rc = inet_addr_pack(&dgram->src, &src);375 if (rc != EOK)376 return rc;377 378 uint32_t dest;379 rc = inet_addr_pack(&dgram->dest, &dest);380 if (rc != EOK)381 return rc;382 383 378 async_exch_t *exch = async_exchange_begin(client->sess); 384 379 385 380 ipc_call_t answer; 386 aid_t req = async_send_3(exch, INET_EV_RECV, (sysarg_t) src, 387 (sysarg_t) dest, dgram->tos, &answer); 388 rc = async_data_write_start(exch, dgram->data, dgram->size); 389 async_exchange_end(exch); 390 391 if (rc != EOK) { 381 aid_t req = async_send_1(exch, INET_EV_RECV, dgram->tos, &answer); 382 383 int rc = async_data_write_start(exch, &dgram->src, sizeof(inet_addr_t)); 384 if (rc != EOK) { 385 async_exchange_end(exch); 392 386 async_forget(req); 393 387 return rc; 394 388 } 395 389 390 rc = async_data_write_start(exch, &dgram->dest, sizeof(inet_addr_t)); 391 if (rc != EOK) { 392 async_exchange_end(exch); 393 async_forget(req); 394 return rc; 395 } 396 397 rc = async_data_write_start(exch, dgram->data, dgram->size); 398 399 async_exchange_end(exch); 400 401 if (rc != EOK) { 402 async_forget(req); 403 return rc; 404 } 405 396 406 sysarg_t retval; 397 407 async_wait_for(req, &retval); 398 if (retval != EOK) 399 return retval; 400 401 return EOK; 408 409 return (int) retval; 402 410 } 403 411
Note:
See TracChangeset
for help on using the changeset viewer.