Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/dhcp/dhcp.c

    rfab2746 re3811c9  
    3737#include <adt/list.h>
    3838#include <bitops.h>
    39 #include <byteorder.h>
    4039#include <errno.h>
    4140#include <fibril_synch.h>
     
    419418}
    420419
     420static int dhcp_discover_proc(dhcp_link_t *dlink)
     421{
     422        dlink->state = ds_selecting;
     423
     424        int rc = dhcp_send_discover(dlink);
     425        if (rc != EOK)
     426                return EIO;
     427
     428        dlink->retries_left = dhcp_discover_retries;
     429       
     430        if ((dlink->timeout->state == fts_not_set) ||
     431            (dlink->timeout->state == fts_fired))
     432                fibril_timer_set(dlink->timeout, dhcp_discover_timeout_val,
     433                    dhcpsrv_discover_timeout, dlink);
     434       
     435        return rc;
     436}
     437
    421438int dhcpsrv_link_add(service_id_t link_id)
    422439{
     
    460477        }
    461478
    462         dlink->state = ds_selecting;
    463 
    464479        log_msg(LOG_DEFAULT, LVL_DEBUG, "Send DHCPDISCOVER");
    465         rc = dhcp_send_discover(dlink);
     480        rc = dhcp_discover_proc(dlink);
    466481        if (rc != EOK) {
    467482                log_msg(LOG_DEFAULT, LVL_ERROR, "Error sending DHCPDISCOVER.");
     
    470485                goto error;
    471486        }
    472 
    473         dlink->retries_left = dhcp_discover_retries;
    474         fibril_timer_set(dlink->timeout, dhcp_discover_timeout_val,
    475             dhcpsrv_discover_timeout, dlink);
    476487
    477488        list_append(&dlink->links, &dhcp_links);
     
    490501}
    491502
     503int dhcpsrv_discover(service_id_t link_id)
     504{
     505        log_msg(LOG_DEFAULT, LVL_DEBUG, "dhcpsrv_link_add(%zu)", link_id);
     506       
     507        dhcp_link_t *dlink = dhcpsrv_link_find(link_id);
     508       
     509        if (dlink == NULL) {
     510                log_msg(LOG_DEFAULT, LVL_NOTE, "Link %zu doesn't exist",
     511                    link_id);
     512                return EINVAL;
     513        }
     514       
     515        return dhcp_discover_proc(dlink);
     516}
     517
    492518static void dhcpsrv_recv_offer(dhcp_link_t *dlink, dhcp_offer_t *offer)
    493519{
     
    535561                return;
    536562        }
     563
     564        /* XXX Work around multiple simultaneous sessions issue */
     565        dhcp_transport_fini(&dlink->dt);
    537566
    538567        log_msg(LOG_DEFAULT, LVL_NOTE, "%s: Successfully configured.",
Note: See TracChangeset for help on using the changeset viewer.