diff --git a/repos/os/src/server/nic_router/domain.cc b/repos/os/src/server/nic_router/domain.cc index a05016ab7f..c2cd211216 100644 --- a/repos/os/src/server/nic_router/domain.cc +++ b/repos/os/src/server/nic_router/domain.cc @@ -266,6 +266,7 @@ Domain &Domain_tree::domain(Avl_string_base const &node) return static_cast(&node)->domain(); } + Domain &Domain_tree::find_by_name(Domain_name name) { if (name == Domain_name() || !first()) { @@ -277,3 +278,13 @@ Domain &Domain_tree::find_by_name(Domain_name name) return domain(*node); } + + +void Domain_tree::destroy_each(Deallocator &dealloc) +{ + while (Avl_string_base *first_ = first()) { + Domain &domain_ = domain(*first_); + remove(first_); + destroy(dealloc, &domain_); + } +} diff --git a/repos/os/src/server/nic_router/domain.h b/repos/os/src/server/nic_router/domain.h index e27b6f0df3..7f645f42de 100644 --- a/repos/os/src/server/nic_router/domain.h +++ b/repos/os/src/server/nic_router/domain.h @@ -203,6 +203,8 @@ struct Net::Domain_tree : Genode::Avl_tree } void insert(Domain &domain) { Avl_tree::insert(&domain.avl_member()); } + + void destroy_each(Genode::Deallocator &dealloc); }; #endif /* _DOMAIN_H_ */