mirror of
https://github.com/genodelabs/genode.git
synced 2025-04-07 11:27:29 +00:00
nic_router: fix link-state for uplink interface
This commit is contained in:
parent
3108b71a89
commit
fe21ab48e0
@ -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 **
|
||||
**********/
|
||||
|
@ -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); }
|
||||
};
|
||||
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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();
|
||||
|
@ -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:
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user