nic_router: fix link-state for uplink interface

This commit is contained in:
Martin Stein 2018-05-24 13:18:41 +02:00 committed by Christian Helmuth
parent 3108b71a89
commit fe21ab48e0
5 changed files with 29 additions and 24 deletions

View File

@ -108,6 +108,17 @@ Net::Session_component::Session_component(Allocator &alloc,
}
bool Net::Session_component::_link_state()
{
try {
domain();
return true;
}
catch (Pointer<Domain>::Invalid) { }
return false;
}
/**********
** Root **
**********/

View File

@ -102,8 +102,9 @@ class Net::Session_component : private Session_component_base,
** Net::Interface **
********************/
Packet_stream_sink &_sink() { return *_tx.sink(); }
Packet_stream_source &_source() { return *_rx.source(); }
Packet_stream_sink &_sink() override { return *_tx.sink(); }
Packet_stream_source &_source() override { return *_rx.source(); }
bool _link_state() override;
public:
@ -126,9 +127,9 @@ class Net::Session_component : private Session_component_base,
** Nic::Session **
******************/
Mac_address mac_address() override { return _mac; }
bool link_state() override { return Interface::link_state(); }
void link_state_sigh(Genode::Signal_context_capability sigh) override { Interface::link_state_sigh(sigh); }
Mac_address mac_address() override { return _mac; }
bool link_state() override { return _link_state(); }
void link_state_sigh(Genode::Signal_context_capability sigh) override { Interface::link_state_sigh(sigh); }
};

View File

@ -284,17 +284,6 @@ void Interface::attach_to_ip_config(Domain &domain,
}
bool Interface::link_state()
{
try {
_domain();
return true;
}
catch (Pointer<Domain>::Invalid) { }
return false;
}
void Interface::link_state_sigh(Signal_context_capability sigh)
{
_link_state_sigh = sigh;

View File

@ -235,10 +235,6 @@ class Net::Interface : private Interface_list::Element
void _ack_packet(Packet_descriptor const &pkt);
virtual Packet_stream_sink &_sink() = 0;
virtual Packet_stream_source &_source() = 0;
void _send_alloc_pkt(Genode::Packet_descriptor &pkt,
void * &pkt_base,
Genode::size_t pkt_size);
@ -284,6 +280,15 @@ class Net::Interface : private Interface_list::Element
Ipv4_packet const &req_ip,
Icmp_packet::Code const code);
/*******************
** Pure virtuals **
*******************/
virtual Packet_stream_sink &_sink() = 0;
virtual Packet_stream_source &_source() = 0;
virtual bool _link_state() = 0;
/***********************************
@ -373,8 +378,6 @@ class Net::Interface : private Interface_list::Element
void attach_to_remote_ip_config();
bool link_state();
void link_state_sigh(Genode::Signal_context_capability sigh);
void init();

View File

@ -71,8 +71,9 @@ class Net::Uplink : public Uplink_base,
** Net::Interface **
********************/
Packet_stream_sink &_sink() override { return *rx(); }
Packet_stream_source &_source() override { return *tx(); }
Packet_stream_sink &_sink() override { return *rx(); }
Packet_stream_source &_source() override { return *tx(); }
bool _link_state() override { return link_state(); }
public: