Changeset 6df418c4 in mainline for uspace/srv/net/tl/tcp/segment.c


Ignore:
Timestamp:
2011-10-24T04:23:23Z (13 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
6e88fea
Parents:
f343a16
Message:

Retransmission queue, detect ACK of FIN.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/tl/tcp/segment.c

    rf343a16 r6df418c4  
    5353}
    5454
     55/** Create duplicate of segment.
     56 *
     57 * @param seg   Segment
     58 * @return      Duplicate segment
     59 */
     60tcp_segment_t *tcp_segment_dup(tcp_segment_t *seg)
     61{
     62        tcp_segment_t *scopy;
     63        size_t tsize;
     64
     65        scopy = tcp_segment_new();
     66        if (scopy == NULL)
     67                return NULL;
     68
     69        scopy->ctrl = seg->ctrl;
     70        scopy->seq = seg->seq;
     71        scopy->ack = seg->ack;
     72        scopy->len = seg->len;
     73        scopy->wnd = seg->wnd;
     74        scopy->up = seg->up;
     75
     76        tsize = tcp_segment_text_size(seg);
     77        scopy->data = calloc(tsize, 1);
     78        if (scopy->data == NULL) {
     79                free(scopy);
     80                return NULL;
     81        }
     82
     83        memcpy(scopy->data, seg->data, tsize);
     84        scopy->dfptr = scopy->data;
     85
     86        return scopy;
     87}
     88
    5589/** Create a control-only segment.
    5690 *
Note: See TracChangeset for help on using the changeset viewer.