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));
}