Changeset 8d48c7e in mainline for uspace/srv/net/inetsrv
- Timestamp:
- 2015-06-02T16:00:42Z (10 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 2c4bb828
- Parents:
- ab6326bc
- Location:
- uspace/srv/net/inetsrv
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/net/inetsrv/inet_link.c
rab6326bc r8d48c7e 73 73 { 74 74 memcpy(ip_addr, link_local_node_ip, 16); 75 75 76 76 ip_addr[8] = mac_addr[0] ^ 0x02; 77 77 ip_addr[9] = mac_addr[1]; … … 85 85 { 86 86 log_msg(LOG_DEFAULT, LVL_DEBUG, "inet_iplink_recv()"); 87 87 88 88 int rc; 89 89 inet_packet_t packet; 90 90 inet_link_t *ilink; 91 92 ilink = (inet_link_t *)iplink_get_userptr(iplink); 93 91 94 switch (ver) { 92 95 case ip_v4: 93 rc = inet_pdu_decode(sdu->data, sdu->size, &packet); 96 rc = inet_pdu_decode(sdu->data, sdu->size, ilink->svc_id, 97 &packet); 94 98 break; 95 99 case ip_v6: 96 rc = inet_pdu_decode6(sdu->data, sdu->size, &packet); 100 rc = inet_pdu_decode6(sdu->data, sdu->size, ilink->svc_id, 101 &packet); 97 102 break; 98 103 default: … … 100 105 return EINVAL; 101 106 } 102 107 103 108 if (rc != EOK) { 104 109 log_msg(LOG_DEFAULT, LVL_DEBUG, "failed decoding PDU"); 105 110 return rc; 106 111 } 107 112 113 log_msg(LOG_DEFAULT, LVL_NOTE, "inet_iplink_recv: link_id=%zu", packet.link_id); 108 114 log_msg(LOG_DEFAULT, LVL_DEBUG, "call inet_recv_packet()"); 109 115 rc = inet_recv_packet(&packet); 110 116 log_msg(LOG_DEFAULT, LVL_DEBUG, "call inet_recv_packet -> %d", rc); 111 117 free(packet.data); 112 118 113 119 return rc; 114 120 } … … 177 183 } 178 184 179 rc = iplink_open(ilink->sess, &inet_iplink_ev_ops, &ilink->iplink);185 rc = iplink_open(ilink->sess, &inet_iplink_ev_ops, ilink, &ilink->iplink); 180 186 if (rc != EOK) { 181 187 log_msg(LOG_DEFAULT, LVL_ERROR, "Failed opening IP link '%s'", -
uspace/srv/net/inetsrv/inetsrv.c
rab6326bc r8d48c7e 469 469 { 470 470 async_exch_t *exch = async_exchange_begin(client->sess); 471 471 472 472 ipc_call_t answer; 473 aid_t req = async_send_1(exch, INET_EV_RECV, dgram->tos, &answer); 474 473 474 log_msg(LOG_DEFAULT, LVL_NOTE, "inet_ev_recv: iplink=%zu", 475 dgram->iplink); 476 477 aid_t req = async_send_2(exch, INET_EV_RECV, dgram->tos, 478 dgram->iplink, &answer); 479 475 480 int rc = async_data_write_start(exch, &dgram->src, sizeof(inet_addr_t)); 476 481 if (rc != EOK) { … … 479 484 return rc; 480 485 } 481 486 482 487 rc = async_data_write_start(exch, &dgram->dest, sizeof(inet_addr_t)); 483 488 if (rc != EOK) { … … 486 491 return rc; 487 492 } 488 493 489 494 rc = async_data_write_start(exch, dgram->data, dgram->size); 490 495 491 496 async_exchange_end(exch); 492 497 493 498 if (rc != EOK) { 494 499 async_forget(req); 495 500 return rc; 496 501 } 497 502 498 503 sysarg_t retval; 499 504 async_wait_for(req, &retval); 500 505 501 506 return (int) retval; 502 507 } … … 511 516 if (proto == IP_PROTO_ICMP) 512 517 return icmp_recv(dgram); 513 518 514 519 if (proto == IP_PROTO_ICMPV6) 515 520 return icmpv6_recv(dgram); … … 540 545 if (packet->offs == 0 && !packet->mf) { 541 546 /* It is complete deliver it immediately */ 547 dgram.iplink = packet->link_id; 542 548 dgram.src = packet->src; 543 549 dgram.dest = packet->dest; -
uspace/srv/net/inetsrv/inetsrv.h
rab6326bc r8d48c7e 75 75 76 76 typedef struct { 77 /** Local link ID */ 78 service_id_t link_id; 77 79 /** Source address */ 78 80 inet_addr_t src; -
uspace/srv/net/inetsrv/pdu.c
rab6326bc r8d48c7e 298 298 /** Decode IPv4 datagram 299 299 * 300 * @param data Serialized IPv4 datagram 301 * @param size Length of serialized IPv4 datagram 302 * @param packet IP datagram structure to be filled 300 * @param data Serialized IPv4 datagram 301 * @param size Length of serialized IPv4 datagram 302 * @param link_id Link on which PDU was received 303 * @param packet IP datagram structure to be filled 303 304 * 304 305 * @return EOK on success … … 307 308 * 308 309 */ 309 int inet_pdu_decode(void *data, size_t size, inet_packet_t *packet) 310 int inet_pdu_decode(void *data, size_t size, service_id_t link_id, 311 inet_packet_t *packet) 310 312 { 311 313 log_msg(LOG_DEFAULT, LVL_DEBUG, "inet_pdu_decode()"); … … 366 368 367 369 memcpy(packet->data, (uint8_t *) data + data_offs, packet->size); 370 packet->link_id = link_id; 368 371 369 372 return EOK; … … 372 375 /** Decode IPv6 datagram 373 376 * 374 * @param data Serialized IPv6 datagram 375 * @param size Length of serialized IPv6 datagram 376 * @param packet IP datagram structure to be filled 377 * @param data Serialized IPv6 datagram 378 * @param size Length of serialized IPv6 datagram 379 * @param link_id Link on which PDU was received 380 * @param packet IP datagram structure to be filled 377 381 * 378 382 * @return EOK on success … … 381 385 * 382 386 */ 383 int inet_pdu_decode6(void *data, size_t size, inet_packet_t *packet) 387 int inet_pdu_decode6(void *data, size_t size, service_id_t link_id, 388 inet_packet_t *packet) 384 389 { 385 390 log_msg(LOG_DEFAULT, LVL_DEBUG, "inet_pdu_decode6()"); … … 457 462 458 463 memcpy(packet->data, (uint8_t *) data + data_offs, packet->size); 459 464 packet->link_id = link_id; 460 465 return EOK; 461 466 } -
uspace/srv/net/inetsrv/pdu.h
rab6326bc r8d48c7e 38 38 #define INET_PDU_H_ 39 39 40 #include <loc.h> 40 41 #include <sys/types.h> 41 42 #include "inetsrv.h" … … 50 51 extern int inet_pdu_encode6(inet_packet_t *, addr128_t, addr128_t, size_t, 51 52 size_t, void **, size_t *, size_t *); 52 extern int inet_pdu_decode(void *, size_t, inet_packet_t *);53 extern int inet_pdu_decode6(void *, size_t, inet_packet_t *);53 extern int inet_pdu_decode(void *, size_t, service_id_t, inet_packet_t *); 54 extern int inet_pdu_decode6(void *, size_t, service_id_t, inet_packet_t *); 54 55 55 56 extern int ndp_pdu_decode(inet_dgram_t *, ndp_packet_t *); -
uspace/srv/net/inetsrv/reass.c
rab6326bc r8d48c7e 325 325 return ENOMEM; 326 326 327 /* XXX What if different fragments came from different link? */ 328 dgram.iplink = frag->packet.link_id; 327 329 dgram.size = dgram_size; 328 330 dgram.src = frag->packet.src;
Note:
See TracChangeset
for help on using the changeset viewer.