if(uip_newdata() && parse_msg() == DHCPACK) { struct dhcp_msg *m = (struct dhcp_msg *) p_appdata; s.state = STATE_CONFIG_RECEIVED; break; } |
static u8_t parse_msg(void) { struct dhcp_msg *m = (struct dhcp_msg *) uip_appdata; if (m->op == DHCP_REPLY && memcmp(m->xid, xid, sizeof(xid)) == 0 && memcmp( m->chaddr, s.mac_addr, s.mac_len) == 0) { memcpy(s.ipaddr, m->yiaddr, 4); return parse_options(&m->options[4], uip_datalen()); } return 0; } |
if(uip_newdata() && parse_msg() == DHCPOFFER) { uip_flags &= ~UIP_NEWDATA; dhcp_s.state = STATE_OFFER_RECEIVED; break; } uip_flags &= ~UIP_NEWDATA; |
if(uip_newdata() && parse_msg() == DHCPACK) { uip_flags &= ~UIP_NEWDATA; dhcp_s.state = STATE_CONFIG_RECEIVED; break; } uip_flags &= ~UIP_NEWDATA; |