Пример #1
0
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;
}