mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-19 13:47:56 +00:00
nic_router: cancel remote ARP on new IP config
When a domain is updated to a new component config, the two criteria for keeping an ARP waiting state of a remote domain are whether the remote domain still exists and whether its IP config is still the same. This means that a domain must also dissolve all of its remote ARP waiting states if its IP config changes (without an update of the component config). This wasn't the case until now. Issue #2840
This commit is contained in:
parent
9b619e95b2
commit
055862c0eb
@ -80,6 +80,11 @@ void Domain::ip_config(Ipv4_config const &new_ip_config)
|
||||
interface.detach_from_remote_ip_config();
|
||||
});
|
||||
});
|
||||
/* dissolve foreign ARP waiters */
|
||||
while (_foreign_arp_waiters.first()) {
|
||||
Arp_waiter &waiter = *_foreign_arp_waiters.first()->object();
|
||||
waiter.src().cancel_arp_waiting(waiter);
|
||||
}
|
||||
}
|
||||
/* overwrite old with new IP config */
|
||||
_ip_config.construct(new_ip_config);
|
||||
@ -229,16 +234,6 @@ Domain::~Domain()
|
||||
}
|
||||
|
||||
|
||||
void Domain::__FIXME__dissolve_foreign_arp_waiters()
|
||||
{
|
||||
/* let other interfaces destroy their ARP waiters that wait for us */
|
||||
while (_foreign_arp_waiters.first()) {
|
||||
Arp_waiter &waiter = *_foreign_arp_waiters.first()->object();
|
||||
waiter.src().cancel_arp_waiting(waiter);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Dhcp_server &Domain::dhcp_server()
|
||||
{
|
||||
Dhcp_server &dhcp_server = _dhcp_server();
|
||||
|
Loading…
Reference in New Issue
Block a user