Changeset b417559 in mainline for uspace/srv/net/inetsrv/inet_link.c


Ignore:
Timestamp:
2013-09-24T21:00:52Z (11 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
1b0602a3
Parents:
66ec63a
Message:

Retransmit DHCP discover and request messages on timeout. Introduce DHCP link states.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/inetsrv/inet_link.c

    r66ec63a rb417559  
    5656
    5757static int inet_iplink_recv(iplink_t *, iplink_recv_sdu_t *, uint16_t);
     58static inet_link_t *inet_link_get_by_id_locked(sysarg_t);
    5859
    5960static iplink_ev_ops_t inet_iplink_ev_ops = {
     
    183184
    184185        log_msg(LOG_DEFAULT, LVL_DEBUG, "Opened IP link '%s'", ilink->svc_name);
     186
     187        fibril_mutex_lock(&inet_links_lock);
     188
     189        if (inet_link_get_by_id_locked(sid) != NULL) {
     190                fibril_mutex_unlock(&inet_links_lock);
     191                log_msg(LOG_DEFAULT, LVL_DEBUG, "Link %zu already open",
     192                    sid);
     193                rc = EEXIST;
     194                goto error;
     195        }
     196
    185197        list_append(&ilink->link_list, &inet_links);
     198        fibril_mutex_unlock(&inet_links_lock);
    186199
    187200        inet_addrobj_t *addr = NULL;
     
    412425}
    413426
     427static inet_link_t *inet_link_get_by_id_locked(sysarg_t link_id)
     428{
     429        assert(fibril_mutex_is_locked(&inet_links_lock));
     430
     431        list_foreach(inet_links, link_list, inet_link_t, ilink) {
     432                if (ilink->svc_id == link_id)
     433                        return ilink;
     434        }
     435
     436        return NULL;
     437}
     438
    414439inet_link_t *inet_link_get_by_id(sysarg_t link_id)
    415440{
     441        inet_link_t *ilink;
     442
    416443        fibril_mutex_lock(&inet_links_lock);
    417 
    418         list_foreach(inet_links, link_list, inet_link_t, ilink) {
    419                 if (ilink->svc_id == link_id) {
    420                         fibril_mutex_unlock(&inet_links_lock);
    421                         return ilink;
    422                 }
    423         }
    424 
     444        ilink = inet_link_get_by_id_locked(link_id);
    425445        fibril_mutex_unlock(&inet_links_lock);
    426         return NULL;
     446
     447        return ilink;
    427448}
    428449
Note: See TracChangeset for help on using the changeset viewer.