Changeset 975d528 in mainline for uspace/srv/net/tcp/tcp_type.h


Ignore:
Timestamp:
2017-09-10T17:48:58Z (7 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
e1b4ae0
Parents:
12dcd5f
Message:

Add unit tests for TCP tqueue. Fix tqueue possibly being finalized without freeing pending segments.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/tcp/tcp_type.h

    r12dcd5f r975d528  
    126126} tcp_iqueue_t;
    127127
    128 /** Retransmission queue */
    129 typedef struct {
    130         struct tcp_conn *conn;
    131         list_t list;
    132 
    133         /** Retransmission timer */
    134         fibril_timer_t *timer;
    135 } tcp_tqueue_t;
    136 
    137128/** Active or passive connection */
    138129typedef enum {
     
    156147        void (*recv_data)(tcp_conn_t *, void *);
    157148} tcp_cb_t;
     149
     150/** Data returned by Status user call */
     151typedef struct {
     152        /** Connection state */
     153        tcp_cstate_t cstate;
     154} tcp_conn_status_t;
     155
     156typedef struct {
     157        /** SYN, FIN */
     158        tcp_control_t ctrl;
     159
     160        /** Segment sequence number */
     161        uint32_t seq;
     162        /** Segment acknowledgement number */
     163        uint32_t ack;
     164        /** Segment length in sequence space */
     165        uint32_t len;
     166        /** Segment window */
     167        uint32_t wnd;
     168        /** Segment urgent pointer */
     169        uint32_t up;
     170
     171        /** Segment data, may be moved when trimming segment */
     172        void *data;
     173        /** Segment data, original pointer used to free data */
     174        void *dfptr;
     175} tcp_segment_t;
     176
     177/** Receive queue entry */
     178typedef struct {
     179        link_t link;
     180        inet_ep2_t epp;
     181        tcp_segment_t *seg;
     182} tcp_rqueue_entry_t;
     183
     184/** Receive queue callbacks */
     185typedef struct {
     186        /** Segment received */
     187        void (*seg_received)(inet_ep2_t *, tcp_segment_t *);
     188} tcp_rqueue_cb_t;
     189
     190/** NCSim queue entry */
     191typedef struct {
     192        link_t link;
     193        suseconds_t delay;
     194        inet_ep2_t epp;
     195        tcp_segment_t *seg;
     196} tcp_squeue_entry_t;
     197
     198/** Incoming queue entry */
     199typedef struct {
     200        link_t link;
     201        tcp_segment_t *seg;
     202} tcp_iqueue_entry_t;
     203
     204/** Retransmission queue entry */
     205typedef struct {
     206        link_t link;
     207        tcp_conn_t *conn;
     208        tcp_segment_t *seg;
     209} tcp_tqueue_entry_t;
     210
     211/** Retransmission queue callbacks */
     212typedef struct {
     213        /** Segment received */
     214        void (*transmit_seg)(inet_ep2_t *, tcp_segment_t *);
     215} tcp_tqueue_cb_t;
     216
     217/** Retransmission queue */
     218typedef struct {
     219        struct tcp_conn *conn;
     220        list_t list;
     221
     222        /** Retransmission timer */
     223        fibril_timer_t *timer;
     224
     225        /** Callbacks */
     226        tcp_tqueue_cb_t *cb;
     227} tcp_tqueue_t;
    158228
    159229/** Connection */
     
    246316};
    247317
    248 /** Data returned by Status user call */
    249 typedef struct {
    250         /** Connection state */
    251         tcp_cstate_t cstate;
    252 } tcp_conn_status_t;
    253 
    254 typedef struct {
    255         /** SYN, FIN */
    256         tcp_control_t ctrl;
    257 
    258         /** Segment sequence number */
    259         uint32_t seq;
    260         /** Segment acknowledgement number */
    261         uint32_t ack;
    262         /** Segment length in sequence space */
    263         uint32_t len;
    264         /** Segment window */
    265         uint32_t wnd;
    266         /** Segment urgent pointer */
    267         uint32_t up;
    268 
    269         /** Segment data, may be moved when trimming segment */
    270         void *data;
    271         /** Segment data, original pointer used to free data */
    272         void *dfptr;
    273 } tcp_segment_t;
    274 
    275 /** Receive queue entry */
    276 typedef struct {
    277         link_t link;
    278         inet_ep2_t epp;
    279         tcp_segment_t *seg;
    280 } tcp_rqueue_entry_t;
    281 
    282 /** Receive queue callbacks */
    283 typedef struct {
    284         /** Segment received */
    285         void (*seg_received)(inet_ep2_t *, tcp_segment_t *);
    286 } tcp_rqueue_cb_t;
    287 
    288 /** NCSim queue entry */
    289 typedef struct {
    290         link_t link;
    291         suseconds_t delay;
    292         inet_ep2_t epp;
    293         tcp_segment_t *seg;
    294 } tcp_squeue_entry_t;
    295 
    296 /** Incoming queue entry */
    297 typedef struct {
    298         link_t link;
    299         tcp_segment_t *seg;
    300 } tcp_iqueue_entry_t;
    301 
    302 /** Retransmission queue entry */
    303 typedef struct {
    304         link_t link;
    305         tcp_conn_t *conn;
    306         tcp_segment_t *seg;
    307 } tcp_tqueue_entry_t;
    308 
    309318/** Continuation of processing.
    310319 *
Note: See TracChangeset for help on using the changeset viewer.