static void pico_dhcpd_wakeup(uint16_t ev, struct pico_socket *s) { uint8_t buf[DHCP_SERVER_MAXMSGSIZE] = {0}; int r = 0; if (ev != PICO_SOCK_EV_RD) return; r = pico_socket_recvfrom(s, buf, DHCP_SERVER_MAXMSGSIZE, NULL, NULL); if (r < 0) return; pico_dhcp_server_recv(s, buf, (uint32_t)r); return; }
uint8_t check_if_valid_request_and_init_peerinfo(struct pico_socket *s) { char recvbuf[REQUEST_LENGTH+1]; // +1 for terminator int read=-1; read = pico_socket_recvfrom(s, recvbuf, REQUEST_LENGTH, &peer, &port); if (read < 0) { printf("Pico socket recvfrom failed. error = %i\n", pico_err); printf("pico_err: %s\n", strerror(pico_err)); return -1; } recvbuf[read]='\n'; if (!(strncmp(recvbuf, REQUEST_STRING, strlen(REQUEST_STRING)) == 0)) { printf("Wrong request string\n"); return -1; } return 1; }