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_request() { if (next_state != REQUEST) { fprintf(err, "State is not REQUEST!\n"); return; } fprintf(err, "dhcp_request()...\n"); int len; struct dhcp_packet *packet = make_packet(&len); send_packet((char*)packet, len); free(packet); next_state = ACK; dhcp_ack(); }