Changeset 6896409c in mainline
- Timestamp:
- 2011-11-21T22:46:37Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 1812a0d
- Parents:
- eea65f4
- Location:
- uspace
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/include/bitops.h
reea65f4 r6896409c 40 40 /** Mask with bit @a n set. */ 41 41 #define BIT_V(type, n) \ 42 ((type)1 << ( (n) - 1))42 ((type)1 << (n)) 43 43 44 44 /** Mask with rightmost @a n bits set. */ 45 45 #define BIT_RRANGE(type, n) \ 46 (BIT_V(type, (n) + 1) - 1)46 (BIT_V(type, (n)) - 1) 47 47 48 48 /** Mask with bits @a hi .. @a lo set. @a hi >= @a lo. */ -
uspace/srv/net/tl/tcp/conn.c
reea65f4 r6896409c 190 190 case st_syn_received: 191 191 case st_established: 192 log_msg(LVL_DEBUG, " FIN sent -> Fin-Wait-1");192 log_msg(LVL_DEBUG, "%s: FIN sent -> Fin-Wait-1", conn->name); 193 193 tcp_conn_state_set(conn, st_fin_wait_1); 194 194 break; 195 195 case st_close_wait: 196 log_msg(LVL_DEBUG, " FIN sent -> Last-Ack");196 log_msg(LVL_DEBUG, "%s: FIN sent -> Last-Ack", conn->name); 197 197 tcp_conn_state_set(conn, st_last_ack); 198 198 break; 199 199 default: 200 log_msg(LVL_ERROR, "Connection state %d", conn->cstate); 200 log_msg(LVL_ERROR, "%s: Connection state %d", conn->name, 201 conn->cstate); 201 202 assert(false); 202 203 } … … 367 368 368 369 if ((seg->ctrl & CTL_RST) != 0) { 369 log_msg(LVL_DEBUG, "Connection reset. -> Closed"); 370 log_msg(LVL_DEBUG, "%s: Connection reset. -> Closed", 371 conn->name); 370 372 /* XXX Signal user error */ 371 373 tcp_conn_state_set(conn, st_closed); … … 408 410 409 411 if (seq_no_syn_acked(conn)) { 410 log_msg(LVL_DEBUG, " syn acked -> Established");412 log_msg(LVL_DEBUG, "%s: syn acked -> Established", conn->name); 411 413 tcp_conn_state_set(conn, st_established); 412 414 tcp_tqueue_ctrl_seg(conn, CTL_ACK /* XXX */); 413 415 } else { 414 log_msg(LVL_DEBUG, " syn not acked -> Syn-Received"); 416 log_msg(LVL_DEBUG, "%s: syn not acked -> Syn-Received", 417 conn->name); 415 418 tcp_conn_state_set(conn, st_syn_received); 416 419 tcp_tqueue_ctrl_seg(conn, CTL_SYN | CTL_ACK /* XXX */); … … 527 530 } 528 531 529 log_msg(LVL_DEBUG, " SYN ACKed -> Established");532 log_msg(LVL_DEBUG, "%s: SYN ACKed -> Established", conn->name); 530 533 531 534 tcp_conn_state_set(conn, st_established); … … 601 604 602 605 if (conn->fin_is_acked) { 603 log_msg(LVL_DEBUG, " FIN acked -> Fin-Wait-2");606 log_msg(LVL_DEBUG, "%s: FIN acked -> Fin-Wait-2", conn->name); 604 607 tcp_conn_state_set(conn, st_fin_wait_2); 605 608 } … … 666 669 667 670 if (conn->fin_is_acked) { 668 log_msg(LVL_DEBUG, " FIN acked -> Closed");671 log_msg(LVL_DEBUG, "%s: FIN acked -> Closed", conn->name); 669 672 tcp_conn_remove(conn); 670 673 tcp_conn_state_set(conn, st_closed); … … 815 818 tcp_conn_trim_seg_to_wnd(conn, seg); 816 819 } else { 820 log_msg(LVL_DEBUG, "%s: Nothing left in segment, dropping " 821 "(xfer_size=%zu, SEG.LEN=%zu, seg->ctrl=%u)", 822 conn->name, xfer_size, seg->len, (unsigned)seg->ctrl); 817 823 /* Nothing left in segment */ 818 824 tcp_segment_delete(seg); … … 855 861 case st_syn_received: 856 862 case st_established: 857 log_msg(LVL_DEBUG, "FIN received -> Close-Wait"); 863 log_msg(LVL_DEBUG, "%s: FIN received -> Close-Wait", 864 conn->name); 858 865 tcp_conn_state_set(conn, st_close_wait); 859 866 break; 860 867 case st_fin_wait_1: 861 log_msg(LVL_DEBUG, "FIN received -> Closing"); 868 log_msg(LVL_DEBUG, "%s: FIN received -> Closing", 869 conn->name); 862 870 tcp_conn_state_set(conn, st_closing); 863 871 break; 864 872 case st_fin_wait_2: 865 log_msg(LVL_DEBUG, "FIN received -> Time-Wait"); 873 log_msg(LVL_DEBUG, "%s: FIN received -> Time-Wait", 874 conn->name); 866 875 tcp_conn_state_set(conn, st_time_wait); 867 876 /* Start the Time-Wait timer */ … … 904 913 { 905 914 log_msg(LVL_DEBUG, "tcp_conn_seg_process(%p, %p)", conn, seg); 915 tcp_segment_dump(seg); 906 916 907 917 /* Check whether segment is acceptable */ … … 989 999 990 1000 log_msg(LVL_DEBUG, "tw_timeout_func(%p)", conn); 991 log_msg(LVL_DEBUG, " TW Timeout -> Closed");1001 log_msg(LVL_DEBUG, "%s: TW Timeout -> Closed", conn->name); 992 1002 993 1003 tcp_conn_remove(conn); -
uspace/srv/net/tl/tcp/header.c
reea65f4 r6896409c 35 35 */ 36 36 37 #include <bitops.h> 37 38 #include <byteorder.h> 38 39 #include <errno.h> … … 41 42 #include "header.h" 42 43 #include "segment.h" 44 #include "seq_no.h" 43 45 #include "std.h" 44 46 #include "tcp_type.h" … … 73 75 ctl = 0; 74 76 75 if ((doff_flags & DF_URG) != 0)77 if ((doff_flags & BIT_V(uint16_t, DF_URG)) != 0) 76 78 ctl |= 0 /* XXX */; 77 if ((doff_flags & DF_ACK) != 0)79 if ((doff_flags & BIT_V(uint16_t, DF_ACK)) != 0) 78 80 ctl |= CTL_ACK; 79 if ((doff_flags & DF_PSH) != 0)81 if ((doff_flags & BIT_V(uint16_t, DF_PSH)) != 0) 80 82 ctl |= 0 /* XXX */; 81 if ((doff_flags & DF_RST) != 0)83 if ((doff_flags & BIT_V(uint16_t, DF_RST)) != 0) 82 84 ctl |= CTL_RST; 83 if ((doff_flags & DF_SYN) != 0)85 if ((doff_flags & BIT_V(uint16_t, DF_SYN)) != 0) 84 86 ctl |= CTL_SYN; 85 if ((doff_flags & DF_FIN) != 0)87 if ((doff_flags & BIT_V(uint16_t, DF_FIN)) != 0) 86 88 ctl |= CTL_FIN; 87 89 … … 97 99 98 100 if ((ctl & CTL_ACK) != 0) 99 doff_flags |= DF_ACK;101 doff_flags |= BIT_V(uint16_t, DF_ACK); 100 102 if ((ctl & CTL_RST) != 0) 101 doff_flags |= DF_RST;103 doff_flags |= BIT_V(uint16_t, DF_RST); 102 104 if ((ctl & CTL_SYN) != 0) 103 doff_flags |= DF_SYN;105 doff_flags |= BIT_V(uint16_t, DF_SYN); 104 106 if ((ctl & CTL_FIN) != 0) 105 doff_flags |= DF_FIN;107 doff_flags |= BIT_V(uint16_t, DF_FIN); 106 108 107 109 *rdoff_flags = doff_flags; … … 203 205 204 206 tcp_header_decode(pdu->header, nseg); 207 nseg->len += seq_no_control_len(nseg->ctrl); 205 208 206 209 hdr = (tcp_header_t *)pdu->header; -
uspace/srv/net/tl/tcp/rqueue.c
reea65f4 r6896409c 114 114 log_msg(LVL_DEBUG, "tcp_rqueue_insert_seg()"); 115 115 116 tcp_segment_dump(seg); 117 116 118 rqe = calloc(1, sizeof(tcp_rqueue_entry_t)); 117 119 if (rqe == NULL) { -
uspace/srv/net/tl/tcp/segment.c
reea65f4 r6896409c 35 35 */ 36 36 37 #include <io/log.h> 37 38 #include <mem.h> 38 39 #include <stdlib.h> … … 235 236 } 236 237 238 /** Dump segment contents to log. 239 * 240 * @param seg Segment 241 */ 242 void tcp_segment_dump(tcp_segment_t *seg) 243 { 244 log_msg(LVL_DEBUG, "Segment dump:"); 245 log_msg(LVL_DEBUG, " - ctrl = %u", (unsigned)seg->ctrl); 246 log_msg(LVL_DEBUG, " - seq = % " PRIu32, seg->seq); 247 log_msg(LVL_DEBUG, " - ack = % " PRIu32, seg->ack); 248 log_msg(LVL_DEBUG, " - len = % " PRIu32, seg->len); 249 log_msg(LVL_DEBUG, " - wnd = % " PRIu32, seg->wnd); 250 log_msg(LVL_DEBUG, " - up = % " PRIu32, seg->up); 251 } 252 237 253 /** 238 254 * @} -
uspace/srv/net/tl/tcp/segment.h
reea65f4 r6896409c 48 48 extern void tcp_segment_text_copy(tcp_segment_t *, void *, size_t); 49 49 extern size_t tcp_segment_text_size(tcp_segment_t *); 50 extern void tcp_segment_dump(tcp_segment_t *); 51 50 52 51 53 -
uspace/srv/net/tl/tcp/test.c
reea65f4 r6896409c 66 66 tcp_uc_receive(conn, rcv_buf, RCV_BUF_SIZE, &rcvd, &xflags); 67 67 if (rcvd == 0) { 68 printf(" End of data reached.\n");68 printf("S: End of data reached.\n"); 69 69 break; 70 70 } -
uspace/srv/net/tl/tcp/tqueue.c
reea65f4 r6896409c 152 152 size_t data_size; 153 153 tcp_control_t ctrl; 154 bool send_fin; 154 155 155 156 tcp_segment_t *seg; 156 157 157 log_msg(LVL_DEBUG, " tcp_tqueue_new_data()");158 log_msg(LVL_DEBUG, "%s: tcp_tqueue_new_data()", conn->name); 158 159 159 160 /* Number of free sequence numbers in send window */ … … 162 163 163 164 xfer_seqlen = min(snd_buf_seqlen, avail_wnd); 164 log_msg(LVL_DEBUG, " snd_buf_seqlen = %zu, SND.WND = %zu, "165 "xfer_seqlen = %zu", snd_buf_seqlen, conn->snd_wnd,165 log_msg(LVL_DEBUG, "%s: snd_buf_seqlen = %zu, SND.WND = %zu, " 166 "xfer_seqlen = %zu", conn->name, snd_buf_seqlen, conn->snd_wnd, 166 167 xfer_seqlen); 167 168 … … 171 172 /* XXX Do not always send immediately */ 172 173 173 data_size = xfer_seqlen - (conn->snd_buf_fin ? 1 : 0); 174 if (conn->snd_buf_fin && data_size + 1 == xfer_seqlen) { 174 send_fin = conn->snd_buf_fin && xfer_seqlen == snd_buf_seqlen; 175 data_size = xfer_seqlen - (send_fin ? 1 : 0); 176 177 if (send_fin) { 178 log_msg(LVL_DEBUG, "%s: Sending out FIN.", conn->name); 175 179 /* We are sending out FIN */ 176 180 ctrl = CTL_FIN; … … 190 194 conn->snd_buf_used - data_size); 191 195 conn->snd_buf_used -= data_size; 192 conn->snd_buf_fin = false; 196 197 if (send_fin) 198 conn->snd_buf_fin = false; 193 199 194 200 tcp_tqueue_seg(conn, seg); … … 261 267 log_msg(LVL_DEBUG, "SEG.SEQ=%" PRIu32 ", SEG.WND=%" PRIu32, 262 268 seg->seq, seg->wnd); 269 270 tcp_segment_dump(seg); 263 271 /* 264 272 tcp_pdu_prepare(conn, seg, &data, &len);
Note:
See TracChangeset
for help on using the changeset viewer.