Changeset 053fc2b in mainline for uspace/srv/net/dhcp


Ignore:
Timestamp:
2015-04-10T13:52:11Z (10 years ago)
Author:
Jan Kolarik <kolarik@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
a931b7b
Parents:
d7dadcb4
Message:

Locking, correctly disconnecting device, sending DHCP address discover after connecting to WiFi network

Location:
uspace/srv/net/dhcp
Files:
3 edited

Legend:

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

    rd7dadcb4 r053fc2b  
    418418}
    419419
     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       
     436        return rc;
     437}
     438
    420439int dhcpsrv_link_add(service_id_t link_id)
    421440{
     
    459478        }
    460479
    461         dlink->state = ds_selecting;
    462 
    463480        log_msg(LOG_DEFAULT, LVL_DEBUG, "Send DHCPDISCOVER");
    464         rc = dhcp_send_discover(dlink);
     481        rc = dhcp_discover_proc(dlink);
    465482        if (rc != EOK) {
    466483                log_msg(LOG_DEFAULT, LVL_ERROR, "Error sending DHCPDISCOVER.");
     
    469486                goto error;
    470487        }
    471 
    472         dlink->retries_left = dhcp_discover_retries;
    473         fibril_timer_set(dlink->timeout, dhcp_discover_timeout_val,
    474             dhcpsrv_discover_timeout, dlink);
    475488
    476489        list_append(&dlink->links, &dhcp_links);
     
    487500{
    488501        return ENOTSUP;
     502}
     503
     504int dhcpsrv_discover(service_id_t link_id)
     505{
     506        log_msg(LOG_DEFAULT, LVL_DEBUG, "dhcpsrv_link_add(%zu)", link_id);
     507       
     508        dhcp_link_t *dlink = dhcpsrv_link_find(link_id);
     509
     510        if (dlink == NULL) {
     511                log_msg(LOG_DEFAULT, LVL_NOTE, "Link %zu doesn't exist",
     512                    link_id);
     513                return EINVAL;
     514        }
     515       
     516        return dhcp_discover_proc(dlink);
    489517}
    490518
  • uspace/srv/net/dhcp/dhcp.h

    rd7dadcb4 r053fc2b  
    4343extern int dhcpsrv_link_add(service_id_t);
    4444extern int dhcpsrv_link_remove(service_id_t);
     45extern int dhcpsrv_discover(service_id_t);
    4546
    4647#endif
  • uspace/srv/net/dhcp/main.c

    rd7dadcb4 r053fc2b  
    109109}
    110110
     111static void dhcp_discover_srv(ipc_callid_t callid, ipc_call_t *call)
     112{
     113        sysarg_t link_id;
     114        int rc;
     115
     116        log_msg(LOG_DEFAULT, LVL_DEBUG, "dhcp_discover_srv()");
     117
     118        link_id = IPC_GET_ARG1(*call);
     119
     120        rc = dhcpsrv_discover(link_id);
     121        async_answer_0(callid, rc);
     122}
     123
    111124static void dhcp_client_conn(ipc_callid_t iid, ipc_call_t *icall, void *arg)
    112125{
     
    133146                case DHCP_LINK_REMOVE:
    134147                        dhcp_link_remove_srv(callid, &call);
     148                        break;
     149                case DHCP_DISCOVER:
     150                        dhcp_discover_srv(callid, &call);
    135151                        break;
    136152                default:
Note: See TracChangeset for help on using the changeset viewer.