From bd16f89617625b58376ea1b5a5247b4d363cdaed Mon Sep 17 00:00:00 2001 From: Martin Stein Date: Sun, 4 Feb 2018 15:38:08 +0100 Subject: [PATCH] nic_router: add verbose_packets attribute This separates the decision wether to log the received and sent packets from the 'verbose' attribute. This information is now only logged if 'verbose_packets' is switched on. If 'verbose' is switched on, only routing decisions and optional hints are printed. Ref #2670 --- repos/libports/run/nic_router.run | 1 + repos/os/src/server/nic_router/README | 21 +++++++++++++++++++ repos/os/src/server/nic_router/config.xsd | 1 + .../os/src/server/nic_router/configuration.cc | 6 ++++-- .../os/src/server/nic_router/configuration.h | 2 ++ repos/os/src/server/nic_router/interface.cc | 4 ++-- 6 files changed, 31 insertions(+), 4 deletions(-) diff --git a/repos/libports/run/nic_router.run b/repos/libports/run/nic_router.run index 23b453d951..98244df8b1 100644 --- a/repos/libports/run/nic_router.run +++ b/repos/libports/run/nic_router.run @@ -213,6 +213,7 @@ append config { + +Log router decisions and optional hints. + +! + +Log most important protocol header fields of each packet that is received or +sent by the router (ETH, IPv4, ARP, UDP, TCP, DHCP). + +! + +Log most important changes in the state of a domain (number of nic sessions +connected, current IPv4 config). + + Examples ######## diff --git a/repos/os/src/server/nic_router/config.xsd b/repos/os/src/server/nic_router/config.xsd index 7eecca6496..6edd132ee3 100644 --- a/repos/os/src/server/nic_router/config.xsd +++ b/repos/os/src/server/nic_router/config.xsd @@ -148,6 +148,7 @@ + diff --git a/repos/os/src/server/nic_router/configuration.cc b/repos/os/src/server/nic_router/configuration.cc index 50b95a4916..2b3a9e06aa 100644 --- a/repos/os/src/server/nic_router/configuration.cc +++ b/repos/os/src/server/nic_router/configuration.cc @@ -32,8 +32,10 @@ Configuration::Configuration(Env &env, Allocator &alloc, Timer::Connection &timer) : - _alloc(alloc), _verbose(node.attribute_value("verbose", false)), - _verbose_domain_state(node.attribute_value("verbose_domain_state", false)), + _alloc(alloc), + _verbose (node.attribute_value("verbose", false)), + _verbose_packets (node.attribute_value("verbose_packets", false)), + _verbose_domain_state (node.attribute_value("verbose_domain_state", false)), _dhcp_discover_timeout(read_sec_attr(node, "dhcp_discover_timeout_sec", DEFAULT_DHCP_DISCOVER_TIMEOUT_SEC)), _dhcp_request_timeout (read_sec_attr(node, "dhcp_request_timeout_sec", DEFAULT_DHCP_REQUEST_TIMEOUT_SEC )), _dhcp_offer_timeout (read_sec_attr(node, "dhcp_offer_timeout_sec", DEFAULT_DHCP_OFFER_TIMEOUT_SEC )), diff --git a/repos/os/src/server/nic_router/configuration.h b/repos/os/src/server/nic_router/configuration.h index cd78efef91..67cdb87bc1 100644 --- a/repos/os/src/server/nic_router/configuration.h +++ b/repos/os/src/server/nic_router/configuration.h @@ -32,6 +32,7 @@ class Net::Configuration Genode::Allocator &_alloc; bool const _verbose; + bool const _verbose_packets; bool const _verbose_domain_state; Genode::Microseconds const _dhcp_discover_timeout; Genode::Microseconds const _dhcp_request_timeout; @@ -64,6 +65,7 @@ class Net::Configuration ***************/ bool verbose() const { return _verbose; } + bool verbose_packets() const { return _verbose_packets; } bool verbose_domain_state() const { return _verbose_domain_state; } Genode::Microseconds dhcp_discover_timeout() const { return _dhcp_discover_timeout; } Genode::Microseconds dhcp_request_timeout() const { return _dhcp_request_timeout; } diff --git a/repos/os/src/server/nic_router/interface.cc b/repos/os/src/server/nic_router/interface.cc index 8f1a487095..4aff7472f6 100644 --- a/repos/os/src/server/nic_router/interface.cc +++ b/repos/os/src/server/nic_router/interface.cc @@ -879,7 +879,7 @@ void Interface::_handle_eth(void *const eth_base, /* inspect and handle ethernet frame */ try { Ethernet_frame *const eth = reinterpret_cast(eth_base); - if (_config().verbose()) { + if (_config().verbose_packets()) { log("(router <- ", _domain, ") ", *eth); } if (_domain.ip_config().valid) { @@ -953,7 +953,7 @@ void Interface::_send_submit_pkt(Packet_descriptor &pkt, { _source().submit_packet(pkt); _domain.raise_tx_bytes(pkt_size); - if (_config().verbose()) { + if (_config().verbose_packets()) { log("(", _domain, " <- router) ", *reinterpret_cast(pkt_base)); }