Changeset 2989c7e in mainline for uspace/srv/net/tcp/conn.c


Ignore:
Timestamp:
2015-05-25T21:04:33Z (11 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
ab6326bc
Parents:
58e9dec
Message:

Association map / portrange prototype.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/tcp/conn.c

    r58e9dec r2989c7e  
    3636
    3737#include <adt/list.h>
    38 #include <stdbool.h>
    3938#include <errno.h>
    4039#include <inet/endpoint.h>
    4140#include <io/log.h>
    4241#include <macros.h>
     42#include <nettl/amap.h>
     43#include <stdbool.h>
    4344#include <stdlib.h>
    4445#include "conn.h"
     
    5657#define TIME_WAIT_TIMEOUT       (2*MAX_SEGMENT_LIFETIME)
    5758
    58 LIST_INITIALIZE(conn_list);
    59 FIBRIL_MUTEX_INITIALIZE(conn_list_lock);
     59static LIST_INITIALIZE(conn_list);
     60static FIBRIL_MUTEX_INITIALIZE(conn_list_lock);
     61static amap_t *amap;
    6062
    6163static void tcp_conn_seg_process(tcp_conn_t *conn, tcp_segment_t *seg);
    6264static void tcp_conn_tw_timer_set(tcp_conn_t *conn);
    6365static void tcp_conn_tw_timer_clear(tcp_conn_t *conn);
     66
     67/** Initialize connections. */
     68int tcp_conns_init(void)
     69{
     70        int rc;
     71
     72        rc = amap_create(&amap);
     73        if (rc != EOK) {
     74                assert(rc == ENOMEM);
     75                return ENOMEM;
     76        }
     77
     78        return EOK;
     79}
    6480
    6581/** Create new connection structure.
     
    246262 * Add connection to the connection map.
    247263 */
    248 void tcp_conn_add(tcp_conn_t *conn)
    249 {
     264int tcp_conn_add(tcp_conn_t *conn)
     265{
     266        inet_ep2_t aepp;
     267        int rc;
     268
    250269        tcp_conn_addref(conn);
    251270        fibril_mutex_lock(&conn_list_lock);
     271
     272        rc = amap_insert(amap, &conn->ident, conn, af_allow_system, &aepp);
     273        if (rc != EOK) {
     274                tcp_conn_delref(conn);
     275                fibril_mutex_unlock(&conn_list_lock);
     276                return rc;
     277        }
     278
     279        conn->ident = aepp;
    252280        list_append(&conn->link, &conn_list);
    253281        fibril_mutex_unlock(&conn_list_lock);
     282
     283        return EOK;
    254284}
    255285
     
    261291{
    262292        fibril_mutex_lock(&conn_list_lock);
     293        amap_remove(amap, &conn->ident);
    263294        list_remove(&conn->link);
    264295        fibril_mutex_unlock(&conn_list_lock);
Note: See TracChangeset for help on using the changeset viewer.