860 ip4_addr_t address_in_hton;
863 LWIP_ERROR(
"netif != NULL", (
netif != NULL),
return ERR_ARG);
866 LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE,
867 (
"dhcps_start(netif=%p) %s\n", (
void *)
netif, netif_get_name(
netif)));
869 if (
netif->mtu < DHCP_MAX_MSG_LEN_MIN_REQUIRED) {
870 LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE,
871 (
"MTU =%"U16_F
",DHCP Msg Len Required =%"U32_F
"\n",
netif->mtu, DHCP_MAX_MSG_LEN_MIN_REQUIRED));
876 LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, (
"dhcps_start(): DHCP Server is already started\n"));
880 LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, (
"dhcps_start(): starting new DHCP Server\n"));
883 LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, (
"dhcps_start(): could not allocate dhcp\n"));
887 LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, (
"dhcps_start(): allocated dhcp"));
893 LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, (
"dhcp_start(): could not allocate pcb\n"));
894 mem_free((
void *)
dhcps);
898#if LWIP_SO_BINDTODEVICE
902 if ((start_ip == NULL) || (ip_num == 0)) {
914 (u32_t)(LWIP_MIN(ip_num - 1, LWIP_DHCPS_MAX_LEASE - 1)));
918 if (!ip4_addr_netcmp((&address_in_hton), ip_2_ip4(&
netif->ip_addr), ip_2_ip4(&
netif->netmask)) ||
919 ip4_addr_isbroadcast((&address_in_hton),
netif)) {
920 LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, (
"dhcp_start(): %s in not a valid ip lease\n", start_ip));
922 mem_free((
void *)
dhcps);
928 if (!ip4_addr_netcmp((&address_in_hton), ip_2_ip4(&
netif->ip_addr), ip_2_ip4(&
netif->netmask)) ||
929 ip4_addr_isbroadcast((&address_in_hton),
netif)) {
936 dhcps->
pcb->so_options |= SOF_BROADCAST;
937 err = udp_bind(
dhcps->
pcb, IP_ADDR_ANY, DHCP_SERVER_PORT);
940 mem_free((
void *)
dhcps);
944 err = udp_connect(
dhcps->
pcb, IP_ADDR_ANY, DHCP_CLIENT_PORT);
947 mem_free((
void *)
dhcps);
951 LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, (
"dhcps_start(): starting DHCPS Successfully\n"));
953 LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE,
954 (
"dhcps_start(): DHCPS Conf:: netif addr = %"U32_F
" dhcps start addr%"U32_F
" dhcp end addr%"U32_F
"\n",
957 LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE,
958 (
"dhcps_start(): DHCPS Lease Conf:: Lease Time = %"U32_F
" Offer Time = %"U32_F
"\n",
959 LWIP_DHCPS_LEASE_TIME, LWIP_DHCPS_OFFER_TIME));
LWIP_STATIC void dhcps_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *ip_addr, u16_t port)
ARG_NUM_3 ARG_NUM_1 ARG_NUM_2 ARG_NUM_2 ARG_NUM_3 ARG_NUM_1 ARG_NUM_4 ARG_NUM_2 ARG_NUM_2 ARG_NUM_5 ARG_NUM_2 void