nic_router: avoid "close" where we mean "dissolve"

In the context of link state objects we often used the term "close" were we
actually meant "dissolve". The term "close" originated from the TCP connection
state and is still used in TCP links in the correct manner.

Issue #2609
This commit is contained in:
Martin Stein 2017-12-13 02:00:09 +01:00 committed by Christian Helmuth
parent 859a5fd208
commit 869297a672
4 changed files with 28 additions and 28 deletions

View File

@ -31,11 +31,11 @@ using namespace Genode;
***************/
template <typename LINK_TYPE>
static void _destroy_closed_links(Link_list &closed_links,
Deallocator &dealloc)
static void _destroy_dissolved_links(Link_list &dissolved_links,
Deallocator &dealloc)
{
while (Link *link = closed_links.first()) {
closed_links.remove(link);
while (Link *link = dissolved_links.first()) {
dissolved_links.remove(link);
destroy(dealloc, static_cast<LINK_TYPE *>(link));
}
}
@ -43,10 +43,10 @@ static void _destroy_closed_links(Link_list &closed_links,
template <typename LINK_TYPE>
static void _destroy_links(Link_list &links,
Link_list &closed_links,
Link_list &dissolved_links,
Deallocator &dealloc)
{
_destroy_closed_links<LINK_TYPE>(closed_links, dealloc);
_destroy_dissolved_links<LINK_TYPE>(dissolved_links, dealloc);
while (Link *link = links.first()) {
link->dissolve();
links.remove(link);
@ -225,11 +225,11 @@ Link_list &Interface::links(L3_protocol const protocol)
}
Link_list &Interface::closed_links(L3_protocol const protocol)
Link_list &Interface::dissolved_links(L3_protocol const protocol)
{
switch (protocol) {
case L3_protocol::TCP: return _closed_tcp_links;
case L3_protocol::UDP: return _closed_udp_links;
case L3_protocol::TCP: return _dissolved_tcp_links;
case L3_protocol::UDP: return _dissolved_udp_links;
default: throw Bad_transport_protocol(); }
}
@ -863,8 +863,8 @@ void Interface::_handle_eth(void *const eth_base,
Packet_descriptor const &pkt)
{
/* do garbage collection over transport-layer links and DHCP allocations */
_destroy_closed_links<Udp_link>(_closed_udp_links, _alloc);
_destroy_closed_links<Tcp_link>(_closed_tcp_links, _alloc);
_destroy_dissolved_links<Udp_link>(_dissolved_udp_links, _alloc);
_destroy_dissolved_links<Tcp_link>(_dissolved_tcp_links, _alloc);
_destroy_released_dhcp_allocations();
/* inspect and handle ethernet frame */
@ -997,8 +997,8 @@ Interface::~Interface()
cancel_arp_waiting(*_own_arp_waiters.first()->object());
}
/* destroy links */
_destroy_links<Tcp_link>(_tcp_links, _closed_tcp_links, _alloc);
_destroy_links<Udp_link>(_udp_links, _closed_udp_links, _alloc);
_destroy_links<Tcp_link>(_tcp_links, _dissolved_tcp_links, _alloc);
_destroy_links<Udp_link>(_udp_links, _dissolved_udp_links, _alloc);
/* destroy DHCP allocations */
_destroy_released_dhcp_allocations();

View File

@ -66,8 +66,8 @@ class Net::Interface : public Genode::List<Interface>::Element
Arp_waiter_list _own_arp_waiters;
Link_list _tcp_links;
Link_list _udp_links;
Link_list _closed_tcp_links;
Link_list _closed_udp_links;
Link_list _dissolved_tcp_links;
Link_list _dissolved_udp_links;
Dhcp_allocation_tree _dhcp_allocations;
Dhcp_allocation_list _released_dhcp_allocations;
Dhcp_client _dhcp_client { _alloc, _timer, *this };
@ -217,7 +217,7 @@ class Net::Interface : public Genode::List<Interface>::Element
void send(Ethernet_frame &eth, Genode::size_t const eth_size);
Link_list &closed_links(L3_protocol const protocol);
Link_list &dissolved_links(L3_protocol const protocol);
Link_list &links(L3_protocol const protocol);

View File

@ -121,13 +121,13 @@ Link::Link(Interface &cln_interface,
Timer::Connection &timer,
Configuration &config,
L3_protocol const protocol,
Microseconds const close_timeout)
Microseconds const dissolve_timeout)
:
_config(config),
_client_interface(cln_interface),
_server_port_alloc(srv_port_alloc),
_close_timeout(timer, *this, &Link::_handle_close_timeout),
_close_timeout_us(close_timeout),
_dissolve_timeout(timer, *this, &Link::_handle_dissolve_timeout),
_dissolve_timeout_us(dissolve_timeout),
_protocol(protocol),
_client(cln_interface.domain(), cln_id, *this),
_server(srv_domain, srv_id, *this)
@ -135,15 +135,15 @@ Link::Link(Interface &cln_interface,
_client_interface.links(_protocol).insert(this);
_client.domain().links(_protocol).insert(&_client);
_server.domain().links(_protocol).insert(&_server);
_close_timeout.schedule(_close_timeout_us);
_dissolve_timeout.schedule(_dissolve_timeout_us);
}
void Link::_handle_close_timeout(Duration)
void Link::_handle_dissolve_timeout(Duration)
{
dissolve();
_client_interface.links(_protocol).remove(this);
_client_interface.closed_links(_protocol).insert(this);
_client_interface.dissolved_links(_protocol).insert(this);
}
@ -188,7 +188,7 @@ Tcp_link::Tcp_link(Interface &cln_interface,
void Tcp_link::_fin_acked()
{
if (_server_fin_acked && _client_fin_acked) {
_close_timeout.schedule(Microseconds(config().tcp_max_segm_lifetime().value << 1));
_dissolve_timeout.schedule(Microseconds(config().tcp_max_segm_lifetime().value << 1));
_closed = true;
}
}

View File

@ -128,15 +128,15 @@ class Net::Link : public Link_list::Element
Configuration &_config;
Interface &_client_interface;
Pointer<Port_allocator_guard> const _server_port_alloc;
Timer::One_shot_timeout<Link> _close_timeout;
Genode::Microseconds const _close_timeout_us;
Timer::One_shot_timeout<Link> _dissolve_timeout;
Genode::Microseconds const _dissolve_timeout_us;
L3_protocol const _protocol;
Link_side _client;
Link_side _server;
void _handle_close_timeout(Genode::Duration);
void _handle_dissolve_timeout(Genode::Duration);
void _packet() { _close_timeout.schedule(_close_timeout_us); }
void _packet() { _dissolve_timeout.schedule(_dissolve_timeout_us); }
public:
@ -150,7 +150,7 @@ class Net::Link : public Link_list::Element
Timer::Connection &timer,
Configuration &config,
L3_protocol const protocol,
Genode::Microseconds const close_timeout);
Genode::Microseconds const dissolve_timeout);
void dissolve();