netconfig: netconfig_reconfigure check bool for setting ARP

Only set the gateway to the ARP cache if the caller requests.
This commit is contained in:
James Prestwood 2021-11-03 15:15:02 -07:00 committed by Denis Kenzior
parent 873924a027
commit b4c20ef81c
3 changed files with 6 additions and 4 deletions

View File

@ -1468,7 +1468,7 @@ bool netconfig_configure(struct netconfig *netconfig,
return true;
}
bool netconfig_reconfigure(struct netconfig *netconfig)
bool netconfig_reconfigure(struct netconfig *netconfig, bool set_arp_gw)
{
/*
* Starting with kernel 4.20, ARP cache is flushed when the netdev
@ -1477,7 +1477,8 @@ bool netconfig_reconfigure(struct netconfig *netconfig)
* lost or delayed. Try to force the gateway into the ARP cache
* to alleviate this
*/
netconfig_gateway_to_arp(netconfig);
if (set_arp_gw)
netconfig_gateway_to_arp(netconfig);
if (netconfig->rtm_protocol == RTPROT_DHCP) {
/* TODO l_dhcp_client sending a DHCP inform request */

View File

@ -36,7 +36,7 @@ bool netconfig_load_settings(struct netconfig *netconfig,
bool netconfig_configure(struct netconfig *netconfig,
netconfig_notify_func_t notify,
void *user_data);
bool netconfig_reconfigure(struct netconfig *netconfig);
bool netconfig_reconfigure(struct netconfig *netconfig, bool set_arp_gw);
bool netconfig_reset(struct netconfig *netconfig);
char *netconfig_get_dhcp_server_ipv4(struct netconfig *netconfig);
bool netconfig_get_fils_ip_req(struct netconfig *netconfig,

View File

@ -1851,7 +1851,8 @@ static void station_roamed(struct station *station)
station_roam_timeout_rearm(station, roam_retry_interval);
if (station->netconfig)
netconfig_reconfigure(station->netconfig);
netconfig_reconfigure(station->netconfig,
!supports_arp_evict_nocarrier);
if (station->roam_freqs) {
scan_freq_set_free(station->roam_freqs);