diff --git a/repos/os/src/server/nic_router/component.cc b/repos/os/src/server/nic_router/component.cc index 210282cb5d..a38d9670c9 100644 --- a/repos/os/src/server/nic_router/component.cc +++ b/repos/os/src/server/nic_router/component.cc @@ -124,7 +124,9 @@ Net::Root::Root(Entrypoint &ep, Root_component(&ep.rpc_ep(), &alloc), _timer(timer), _ep(ep), _router_mac(router_mac), _config(config), _buf_ram(buf_ram), _region_map(region_map), _interfaces(interfaces) -{ } +{ + Mac_allocator::mac_addr_base = config.mac_first(); +} Session_component *Net::Root::_create_session(char const *args) diff --git a/repos/os/src/server/nic_router/config.xsd b/repos/os/src/server/nic_router/config.xsd index d8a6a45d37..89025f923a 100644 --- a/repos/os/src/server/nic_router/config.xsd +++ b/repos/os/src/server/nic_router/config.xsd @@ -40,6 +40,13 @@ + + + + + + + @@ -151,6 +158,7 @@ + diff --git a/repos/os/src/server/nic_router/configuration.cc b/repos/os/src/server/nic_router/configuration.cc index db0b6f7cc9..b9c7cd5975 100644 --- a/repos/os/src/server/nic_router/configuration.cc +++ b/repos/os/src/server/nic_router/configuration.cc @@ -52,6 +52,7 @@ Configuration::Configuration(Env &env, _udp_idle_timeout (read_sec_attr(node, "udp_idle_timeout_sec", DEFAULT_UDP_IDLE_TIMEOUT_SEC )), _tcp_idle_timeout (read_sec_attr(node, "tcp_idle_timeout_sec", DEFAULT_TCP_IDLE_TIMEOUT_SEC )), _tcp_max_segm_lifetime(read_sec_attr(node, "tcp_max_segm_lifetime_sec", DEFAULT_TCP_MAX_SEGM_LIFETIME_SEC)), + _mac_first (mac_from_string(node.attribute_value("mac_first", Mac_string("02:02:02:02:02:00")).string())), _node(node) { /* read domains */ diff --git a/repos/os/src/server/nic_router/configuration.h b/repos/os/src/server/nic_router/configuration.h index a560d77b6e..cc1fa94e21 100644 --- a/repos/os/src/server/nic_router/configuration.h +++ b/repos/os/src/server/nic_router/configuration.h @@ -30,6 +30,8 @@ class Net::Configuration { private: + using Mac_string = Genode::String<17>; + Genode::Allocator &_alloc; bool const _verbose { false }; bool const _verbose_packets { false }; @@ -41,6 +43,7 @@ class Net::Configuration Genode::Microseconds const _udp_idle_timeout { DEFAULT_UDP_IDLE_TIMEOUT_SEC }; Genode::Microseconds const _tcp_idle_timeout { DEFAULT_TCP_IDLE_TIMEOUT_SEC }; Genode::Microseconds const _tcp_max_segm_lifetime { DEFAULT_TCP_MAX_SEGM_LIFETIME_SEC }; + Mac_address const _mac_first { mac_from_string("02:02:02:02:02:00") }; Pointer _report { }; Pointer _reporter { }; Domain_tree _domains { }; @@ -86,6 +89,7 @@ class Net::Configuration Domain_tree &domains() { return _domains; } Report &report() { return _report(); } Genode::Xml_node node() const { return _node; } + Mac_address const &mac_first() const { return _mac_first; } }; #endif /* _CONFIGURATION_H_ */