Changeset 962f03b in mainline for uspace/srv/ethip/ethip_nic.c


Ignore:
Timestamp:
2012-02-27T19:32:15Z (12 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
56792a2
Parents:
87e5658c
Message:

IP links need to be made aware of configured IP addresses.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/ethip/ethip_nic.c

    r87e5658c r962f03b  
    115115
    116116        link_initialize(&nic->nic_list);
     117        list_initialize(&nic->addr_list);
    117118
    118119        return nic;
     120}
     121
     122static ethip_link_addr_t *ethip_nic_addr_new(iplink_srv_addr_t *addr)
     123{
     124        ethip_link_addr_t *laddr = calloc(1, sizeof(ethip_link_addr_t));
     125
     126        if (laddr == NULL) {
     127                log_msg(LVL_ERROR, "Failed allocating NIC address structure. "
     128                    "Out of memory.");
     129                return NULL;
     130        }
     131
     132        link_initialize(&laddr->addr_list);
     133        laddr->addr.ipv4 = addr->ipv4;
     134        return laddr;
    119135}
    120136
     
    124140                free(nic->svc_name);
    125141        free(nic);
     142}
     143
     144static void ethip_link_addr_delete(ethip_link_addr_t *laddr)
     145{
     146        free(laddr);
    126147}
    127148
     
    308329        rc = nic_send_frame(nic->sess, data, size);
    309330        log_msg(LVL_DEBUG, "nic_send_frame -> %d", rc);
    310         log_msg(LVL_DEBUG, "nic_send_frame -> %d", rc);
    311         log_msg(LVL_DEBUG, "nic_send_frame -> %d", rc);
    312         log_msg(LVL_DEBUG, "nic_send_frame -> %d", rc);
    313         log_msg(LVL_DEBUG, "nic_send_frame -> %d", rc);
    314         log_msg(LVL_DEBUG, "nic_send_frame -> %d", rc);
    315         log_msg(LVL_DEBUG, "nic_send_frame -> %d", rc);
    316         log_msg(LVL_DEBUG, "nic_send_frame -> %d", rc);
    317331        return rc;
     332}
     333
     334int ethip_nic_addr_add(ethip_nic_t *nic, iplink_srv_addr_t *addr)
     335{
     336        ethip_link_addr_t *laddr;
     337
     338        log_msg(LVL_DEBUG, "ethip_nic_addr_add()");
     339        laddr = ethip_nic_addr_new(addr);
     340        if (laddr == NULL)
     341                return ENOMEM;
     342
     343        list_append(&laddr->addr_list, &nic->addr_list);
     344        return EOK;
     345}
     346
     347int ethip_nic_addr_remove(ethip_nic_t *nic, iplink_srv_addr_t *addr)
     348{
     349        ethip_link_addr_t *laddr;
     350
     351        log_msg(LVL_DEBUG, "ethip_nic_addr_remove()");
     352
     353        laddr = ethip_nic_addr_find(nic, addr);
     354        if (laddr == NULL)
     355                return ENOENT;
     356
     357        list_remove(&laddr->addr_list);
     358        ethip_link_addr_delete(laddr);
     359        return EOK;
     360}
     361
     362ethip_link_addr_t *ethip_nic_addr_find(ethip_nic_t *nic,
     363    iplink_srv_addr_t *addr)
     364{
     365        log_msg(LVL_DEBUG, "ethip_nic_addr_find()");
     366
     367        list_foreach(nic->addr_list, link) {
     368                ethip_link_addr_t *laddr = list_get_instance(link,
     369                    ethip_link_addr_t, addr_list);
     370
     371                if (addr->ipv4 == laddr->addr.ipv4)
     372                        return laddr;
     373        }
     374
     375        return NULL;
    318376}
    319377
Note: See TracChangeset for help on using the changeset viewer.