Changeset 92b42442 in mainline for uspace/srv/udp/udp_inet.c
- Timestamp:
- 2012-04-05T21:16:00Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 7094e196
- Parents:
- ee603c4
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/udp/udp_inet.c
ree603c4 r92b42442 43 43 #include <task.h> 44 44 45 #include "assoc.h" 46 #include "pdu.h" 45 47 #include "std.h" 46 48 #include "udp_inet.h" … … 48 50 49 51 static int udp_inet_ev_recv(inet_dgram_t *dgram); 50 //static void tcp_received_pdu(tcp_pdu_t *pdu);52 static void udp_received_pdu(udp_pdu_t *pdu); 51 53 52 54 static inet_ev_ops_t udp_inet_ev_ops = { … … 57 59 static int udp_inet_ev_recv(inet_dgram_t *dgram) 58 60 { 59 uint8_t *pdu_raw; 60 size_t pdu_raw_size; 61 udp_pdu_t *pdu; 61 62 62 63 log_msg(LVL_DEBUG, "udp_inet_ev_recv()"); 63 64 64 pdu_raw = dgram->data; 65 pdu_raw_size = dgram->size; 65 pdu = udp_pdu_new(); 66 pdu->data = dgram->data; 67 pdu->data_size = dgram->size; 66 68 67 (void)pdu_raw; 68 (void)pdu_raw_size; 69 /* Split into header and payload. */ 70 /* 71 log_msg(LVL_DEBUG, "tcp_inet_ev_recv() - split header/payload"); 69 pdu->src.ipv4 = dgram->src.ipv4; 70 pdu->dest.ipv4 = dgram->dest.ipv4; 71 log_msg(LVL_DEBUG, "src: 0x%08x, dest: 0x%08x", 72 pdu->src.ipv4, pdu->dest.ipv4); 72 73 73 tcp_pdu_t *pdu; 74 size_t hdr_size; 75 tcp_header_t *hdr; 76 uint32_t data_offset; 74 udp_received_pdu(pdu); 75 udp_pdu_delete(pdu); 77 76 78 if (pdu_raw_size < sizeof(tcp_header_t)) {79 log_msg(LVL_WARN, "pdu_raw_size = %zu < sizeof(tcp_header_t) = %zu",80 pdu_raw_size, sizeof(tcp_header_t));81 return EINVAL;82 }83 84 hdr = (tcp_header_t *)pdu_raw;85 data_offset = BIT_RANGE_EXTRACT(uint32_t, DF_DATA_OFFSET_h, DF_DATA_OFFSET_l,86 uint16_t_be2host(hdr->doff_flags));87 88 hdr_size = sizeof(uint32_t) * data_offset;89 90 if (pdu_raw_size < hdr_size) {91 log_msg(LVL_WARN, "pdu_raw_size = %zu < hdr_size = %zu",92 pdu_raw_size, hdr_size);93 return EINVAL;94 }95 96 if (hdr_size < sizeof(tcp_header_t)) {97 log_msg(LVL_WARN, "hdr_size = %zu < sizeof(tcp_header_t) = %zu",98 hdr_size, sizeof(tcp_header_t)); return EINVAL;99 }100 101 log_msg(LVL_DEBUG, "pdu_raw_size=%zu, hdr_size=%zu",102 pdu_raw_size, hdr_size);103 pdu = tcp_pdu_create(pdu_raw, hdr_size, pdu_raw + hdr_size,104 pdu_raw_size - hdr_size);105 if (pdu == NULL) {106 log_msg(LVL_WARN, "Failed creating PDU. Dropped.");107 return ENOMEM;108 }109 110 pdu->src_addr.ipv4 = dgram->src.ipv4;111 pdu->dest_addr.ipv4 = dgram->dest.ipv4;112 log_msg(LVL_DEBUG, "src: 0x%08x, dest: 0x%08x",113 pdu->src_addr.ipv4, pdu->dest_addr.ipv4);114 115 tcp_received_pdu(pdu);116 tcp_pdu_delete(pdu);117 */118 77 return EOK; 119 78 } … … 124 83 int rc; 125 84 inet_dgram_t dgram; 85 86 log_msg(LVL_DEBUG, "udp_transmit_pdu()"); 126 87 127 88 dgram.src.ipv4 = pdu->src.ipv4; … … 139 100 140 101 /** Process received PDU. */ 141 /* 142 static void tcp_received_pdu(tcp_pdu_t *pdu) 102 static void udp_received_pdu(udp_pdu_t *pdu) 143 103 { 144 tcp_segment_t *dseg;145 tcp_sockpair_t rident;104 udp_msg_t *dmsg; 105 udp_sockpair_t rident; 146 106 147 log_msg(LVL_DEBUG, " tcp_received_pdu()");107 log_msg(LVL_DEBUG, "udp_received_pdu()"); 148 108 149 if ( tcp_pdu_decode(pdu, &rident, &dseg) != EOK) {109 if (udp_pdu_decode(pdu, &rident, &dmsg) != EOK) { 150 110 log_msg(LVL_WARN, "Not enough memory. PDU dropped."); 151 111 return; 152 112 } 153 */ 154 /* Insert decoded segment into rqueue */ 155 /* tcp_rqueue_insert_seg(&rident, dseg); 113 114 /* 115 * Insert decoded message into appropriate receive queue. 116 * This transfers ownership of dmsg to the callee, we do not 117 * free it. 118 */ 119 udp_assoc_received(&rident, dmsg); 156 120 } 157 */ 121 158 122 int udp_inet_init(void) 159 123 {
Note:
See TracChangeset
for help on using the changeset viewer.