diff --git a/repos/os/src/server/nic_router/configuration.cc b/repos/os/src/server/nic_router/configuration.cc index 3211335b1..93f8c54ed 100644 --- a/repos/os/src/server/nic_router/configuration.cc +++ b/repos/os/src/server/nic_router/configuration.cc @@ -170,6 +170,24 @@ Configuration::Configuration(Env &env, } +void Configuration::stop_reporting() +{ + if (!_reporter.valid()) { + return; + } + _reporter().enabled(false); +} + + +void Configuration::start_reporting() +{ + if (!_reporter.valid()) { + return; + } + _reporter().enabled(true); +} + + Configuration::~Configuration() { /* destroy uplinks */ diff --git a/repos/os/src/server/nic_router/configuration.h b/repos/os/src/server/nic_router/configuration.h index 41f03f2e7..a3d389fd6 100644 --- a/repos/os/src/server/nic_router/configuration.h +++ b/repos/os/src/server/nic_router/configuration.h @@ -84,6 +84,10 @@ class Net::Configuration ~Configuration(); + void stop_reporting(); + + void start_reporting(); + /*************** ** Accessors ** diff --git a/repos/os/src/server/nic_router/main.cc b/repos/os/src/server/nic_router/main.cc index 7d902d88e..0f2387003 100644 --- a/repos/os/src/server/nic_router/main.cc +++ b/repos/os/src/server/nic_router/main.cc @@ -74,6 +74,8 @@ Net::Main::Main(Env &env) : _env(env) void Net::Main::_handle_config() { + _config().stop_reporting(); + _config_rom.update(); Configuration &old_config = _config(); Configuration &new_config = *new (_heap) @@ -87,6 +89,8 @@ void Net::Main::_handle_config() _for_each_interface([&] (Interface &intf) { intf.handle_config_3(); }); destroy(_heap, &old_config); + + _config().start_reporting(); } diff --git a/repos/os/src/server/nic_router/report.cc b/repos/os/src/server/nic_router/report.cc index bddfe6040..5f6dea540 100644 --- a/repos/os/src/server/nic_router/report.cc +++ b/repos/os/src/server/nic_router/report.cc @@ -42,13 +42,14 @@ Net::Report::Report(bool const &verbose, _domains { domains }, _timeout { timer, *this, &Report::_handle_report_timeout, read_sec_attr(node, "interval_sec", 5) } -{ - _reporter.enabled(true); -} +{ } void Net::Report::_report() { + if (!_reporter.enabled()) { + return; + } try { Reporter::Xml_generator xml(_reporter, [&] () { if (_quota) {