diff --git a/repos/os/src/server/nic_router/component.cc b/repos/os/src/server/nic_router/component.cc index f86cac3a3f..3be7ea3f4c 100644 --- a/repos/os/src/server/nic_router/component.cc +++ b/repos/os/src/server/nic_router/component.cc @@ -115,14 +115,13 @@ Net::Session_component::Session_component(Allocator &alloc, Net::Root::Root(Entrypoint &ep, Timer::Connection &timer, Allocator &alloc, - Mac_address const &router_mac, Configuration &config, Ram_session &buf_ram, Interface_list &interfaces, Region_map ®ion_map) : Root_component(&ep.rpc_ep(), &alloc), _timer(timer), - _mac_alloc(config.mac_first()), _ep(ep), _router_mac(router_mac), + _mac_alloc(config.mac_first()), _ep(ep), _router_mac(_mac_alloc.alloc()), _config(config), _buf_ram(buf_ram), _region_map(region_map), _interfaces(interfaces) { } diff --git a/repos/os/src/server/nic_router/component.h b/repos/os/src/server/nic_router/component.h index 06cf99ea17..c6a6f276d4 100644 --- a/repos/os/src/server/nic_router/component.h +++ b/repos/os/src/server/nic_router/component.h @@ -157,7 +157,6 @@ class Net::Root : public Genode::Root_component Root(Genode::Entrypoint &ep, Timer::Connection &timer, Genode::Allocator &alloc, - Mac_address const &router_mac, Configuration &config, Genode::Ram_session &buf_ram, Interface_list &interfaces, diff --git a/repos/os/src/server/nic_router/interface.cc b/repos/os/src/server/nic_router/interface.cc index 8f9615a8b4..4aa3f0a3eb 100644 --- a/repos/os/src/server/nic_router/interface.cc +++ b/repos/os/src/server/nic_router/interface.cc @@ -198,6 +198,7 @@ void Interface::_pass_prot(Ethernet_frame ð, void *const prot_base, size_t const prot_size) { + eth.src(_router_mac); _update_checksum(prot, prot_base, prot_size, ip.src(), ip.dst(), ip.total_length()); _pass_ip(eth, size_guard, ip); } @@ -416,7 +417,6 @@ void Interface::_adapt_eth(Ethernet_frame ð, new (_alloc) Arp_waiter(*this, remote_domain, hop_ip, pkt); throw Packet_postponed(); } - eth.src(_router_mac); } diff --git a/repos/os/src/server/nic_router/main.cc b/repos/os/src/server/nic_router/main.cc index 277b540b35..1ff5d5d881 100644 --- a/repos/os/src/server/nic_router/main.cc +++ b/repos/os/src/server/nic_router/main.cc @@ -41,7 +41,7 @@ class Net::Main Reference _config { _init_config() }; Signal_handler
_config_handler { _env.ep(), *this, &Main::_handle_config }; Uplink _uplink { _env, _timer, _heap, _interfaces, _config() }; - Root _root { _env.ep(), _timer, _heap, _uplink.router_mac(), _config(), _env.ram(), _interfaces, _env.rm()}; + Root _root { _env.ep(), _timer, _heap, _config(), _env.ram(), _interfaces, _env.rm()}; void _handle_config();