Changes in uspace/srv/net/inetsrv/inetsrv.c [a1a101d:a2e3ee6] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/net/inetsrv/inetsrv.c
ra1a101d ra2e3ee6 98 98 } 99 99 100 inet_sroute_t *sroute = inet_sroute_new(); 101 if (sroute == NULL) { 102 log_msg(LOG_DEFAULT, LVL_ERROR, "Failed creating default route (%d).", rc); 103 return ENOMEM; 104 } 105 106 inet_naddr(&sroute->dest, 0, 0, 0, 0, 0); 107 inet_addr(&sroute->router, 10, 0, 2, 2); 108 sroute->name = str_dup("default"); 109 inet_sroute_add(sroute); 110 100 111 rc = inet_link_discovery_start(); 101 112 if (rc != EOK) … … 182 193 183 194 /* Take source address from the address object */ 184 local->ipv4 = dir.aobj->naddr.ipv4;195 inet_naddr_addr(&dir.aobj->naddr, local); 185 196 return EOK; 186 197 } … … 189 200 ipc_call_t *call) 190 201 { 202 log_msg(LOG_DEFAULT, LVL_DEBUG, "inet_get_srcaddr_srv()"); 203 191 204 inet_addr_t remote; 192 uint8_t tos; 205 inet_addr_unpack(IPC_GET_ARG1(*call), &remote); 206 uint8_t tos = IPC_GET_ARG2(*call); 207 193 208 inet_addr_t local; 194 int rc; 195 196 log_msg(LOG_DEFAULT, LVL_DEBUG, "inet_get_srcaddr_srv()"); 197 198 remote.ipv4 = IPC_GET_ARG1(*call); 199 tos = IPC_GET_ARG2(*call); 200 local.ipv4 = 0; 201 202 rc = inet_get_srcaddr(&remote, tos, &local); 203 async_answer_1(callid, rc, local.ipv4); 209 int rc = inet_get_srcaddr(&remote, tos, &local); 210 if (rc != EOK) { 211 async_answer_0(callid, rc); 212 return; 213 } 214 215 uint32_t local_addr; 216 rc = inet_addr_pack(&local, &local_addr); 217 if (rc != EOK) { 218 async_answer_0(callid, rc); 219 return; 220 } 221 222 async_answer_1(callid, rc, (sysarg_t) local_addr); 204 223 } 205 224 … … 207 226 ipc_call_t *call) 208 227 { 228 log_msg(LOG_DEFAULT, LVL_DEBUG, "inet_send_srv()"); 229 209 230 inet_dgram_t dgram; 210 uint8_t ttl; 211 int df; 212 int rc; 213 214 log_msg(LOG_DEFAULT, LVL_DEBUG, "inet_send_srv()"); 215 216 dgram.src.ipv4 = IPC_GET_ARG1(*call); 217 dgram.dest.ipv4 = IPC_GET_ARG2(*call); 231 232 inet_addr_unpack(IPC_GET_ARG1(*call), &dgram.src); 233 inet_addr_unpack(IPC_GET_ARG2(*call), &dgram.dest); 218 234 dgram.tos = IPC_GET_ARG3(*call); 219 ttl = IPC_GET_ARG4(*call); 220 df = IPC_GET_ARG5(*call); 221 222 rc = async_data_write_accept(&dgram.data, false, 0, 0, 0, &dgram.size); 235 236 uint8_t ttl = IPC_GET_ARG4(*call); 237 int df = IPC_GET_ARG5(*call); 238 239 int rc = async_data_write_accept(&dgram.data, false, 0, 0, 0, 240 &dgram.size); 223 241 if (rc != EOK) { 224 242 async_answer_0(callid, rc); 225 243 return; 226 244 } 227 245 228 246 rc = inet_send(client, &dgram, client->protocol, ttl, df); 229 247 230 248 free(dgram.data); 231 249 async_answer_0(callid, rc); … … 353 371 int inet_ev_recv(inet_client_t *client, inet_dgram_t *dgram) 354 372 { 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 355 383 async_exch_t *exch = async_exchange_begin(client->sess); 356 384 357 385 ipc_call_t answer; 358 aid_t req = async_send_3(exch, INET_EV_RECV, dgram->src.ipv4,359 dgram->dest.ipv4, dgram->tos, &answer);360 intrc = async_data_write_start(exch, dgram->data, dgram->size);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); 361 389 async_exchange_end(exch); 362 390 363 391 if (rc != EOK) { 364 392 async_forget(req); 365 393 return rc; 366 394 } 367 395 368 396 sysarg_t retval; 369 397 async_wait_for(req, &retval); 370 398 if (retval != EOK) 371 399 return retval; 372 400 373 401 return EOK; 374 402 }
Note:
See TracChangeset
for help on using the changeset viewer.