mirror of
https://github.com/espressif/esp-idf
synced 2025-03-10 17:49:10 -04:00
Fix the bug that if one device is in station+softap mode, other device can not
get IP address after connecting to the softap. Now the default netif is station in station+softap mode. The UDP pcb of DHCP server is binded to IP 0.0.0.0. When other device connects to softap, the DHCP offer will be sent by softap.But because the destination IP of DHCP offer is broadcast IP and the source IP of it is 0.0.0.0, it will be sent from default netif, that is station interface. Other device can not receive the DHCP offer sent from station interface. As a result, other device can not get IP address. The resolution is that bind UDP pcb to the IP address of softap. So, the source IP of DHCP offer is that of softap. DHCP offer can be sent from softap interface by source IP route method.
This commit is contained in:
parent
d50aca62c3
commit
20064978ba
@ -1074,7 +1074,7 @@ void dhcps_start(struct netif *netif, ip4_addr_t ip)
|
||||
|
||||
client_address_plus.addr = dhcps_poll.start_ip.addr;
|
||||
|
||||
udp_bind(pcb_dhcps, IP_ADDR_ANY, DHCPS_SERVER_PORT);
|
||||
udp_bind(pcb_dhcps, &netif->ip_addr, DHCPS_SERVER_PORT);
|
||||
udp_recv(pcb_dhcps, handle_dhcp, NULL);
|
||||
#if DHCPS_DEBUG
|
||||
DHCPS_LOG("dhcps:dhcps_start->udp_recv function Set a receive callback handle_dhcp for UDP_PCB pcb_dhcps\n");
|
||||
|
@ -309,6 +309,8 @@ esp_err_t tcpip_adapter_down(tcpip_adapter_if_t tcpip_if)
|
||||
tcpip_adapter_start_ip_lost_timer(tcpip_if);
|
||||
}
|
||||
|
||||
tcpip_adapter_update_default_netif();
|
||||
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user