From: Michael Tremer Date: Mon, 13 Feb 2023 15:34:40 +0000 (+0000) Subject: networkd: Add methods to check zones/ports for carrier X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=20375a083cbb965971b3b471b161e6475cef3c4b;p=network.git networkd: Add methods to check zones/ports for carrier Signed-off-by: Michael Tremer --- diff --git a/src/networkd/port.c b/src/networkd/port.c index 30bd98f5..c6c8781d 100644 --- a/src/networkd/port.c +++ b/src/networkd/port.c @@ -246,3 +246,16 @@ static nw_link* nw_port_get_link(nw_port* port) { const nw_address_t* nw_port_get_address(nw_port* port) { return &port->address; } + +int nw_port_has_carrier(nw_port* port) { + int has_carrier = 0; + + // Fetch link + nw_link* link = nw_port_get_link(port); + if (link) { + has_carrier = nw_link_has_carrier(link); + nw_link_unref(link); + } + + return has_carrier; +} diff --git a/src/networkd/port.h b/src/networkd/port.h index 88610467..33241ed9 100644 --- a/src/networkd/port.h +++ b/src/networkd/port.h @@ -46,4 +46,6 @@ char* nw_port_bus_path(nw_port* port); const nw_address_t* nw_port_get_address(nw_port* port); +int nw_port_has_carrier(nw_port* port); + #endif /* NETWORKD_PORT_H */ diff --git a/src/networkd/zone.c b/src/networkd/zone.c index 1e4abc33..8fe07c5c 100644 --- a/src/networkd/zone.c +++ b/src/networkd/zone.c @@ -163,6 +163,25 @@ char* nw_zone_bus_path(nw_zone* zone) { return p; } +static nw_link* nw_zone_get_link(nw_zone* zone) { + return nw_daemon_get_link_by_name(zone->daemon, zone->name); +} + +// Carrier + +int nw_zone_has_carrier(nw_zone* zone) { + int has_carrier = 0; + + // Fetch link + nw_link* link = nw_zone_get_link(zone); + if (link) { + has_carrier = nw_link_has_carrier(link); + nw_link_unref(link); + } + + return has_carrier; +} + /* MTU */ diff --git a/src/networkd/zone.h b/src/networkd/zone.h index 088bb2f5..f5a2355e 100644 --- a/src/networkd/zone.h +++ b/src/networkd/zone.h @@ -41,6 +41,8 @@ const char* nw_zone_name(nw_zone* zone); char* nw_zone_bus_path(nw_zone* zone); +int nw_zone_has_carrier(nw_zone* zone); + /* MTU */