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; 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 * 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 * lost or delayed. Try to force the gateway into the ARP cache
* to alleviate this * to alleviate this
*/ */
netconfig_gateway_to_arp(netconfig); if (set_arp_gw)
netconfig_gateway_to_arp(netconfig);
if (netconfig->rtm_protocol == RTPROT_DHCP) { if (netconfig->rtm_protocol == RTPROT_DHCP) {
/* TODO l_dhcp_client sending a DHCP inform request */ /* 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, bool netconfig_configure(struct netconfig *netconfig,
netconfig_notify_func_t notify, netconfig_notify_func_t notify,
void *user_data); 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); bool netconfig_reset(struct netconfig *netconfig);
char *netconfig_get_dhcp_server_ipv4(struct netconfig *netconfig); char *netconfig_get_dhcp_server_ipv4(struct netconfig *netconfig);
bool netconfig_get_fils_ip_req(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); station_roam_timeout_rearm(station, roam_retry_interval);
if (station->netconfig) if (station->netconfig)
netconfig_reconfigure(station->netconfig); netconfig_reconfigure(station->netconfig,
!supports_arp_evict_nocarrier);
if (station->roam_freqs) { if (station->roam_freqs) {
scan_freq_set_free(station->roam_freqs); scan_freq_set_free(station->roam_freqs);