ER get_dhcp_addr(DHCP *dhcp) { dhcp_discover(dhcp); if(dhcp_offer(dhcp) < 0){ syslog(LOG_NOTICE, "DHCP Offer error"); return E_SYS; } dhcp_request(dhcp); if(dhcp_ack(dhcp) < 0){ syslog(LOG_NOTICE, "DHCP Ack error"); return E_SYS; } return E_OK; }
void dhcp_discover() { if (next_state != DISCOVER) { fprintf(err, "State is not DISCOVER!\n"); return; } fprintf(err, "dhcp_discover()...\n"); generate_xid(); renew = 0; int len; struct dhcp_packet *packet = make_packet(&len); send_packet((char*)packet, len); free(packet); next_state = OFFER; dhcp_offer(); }