]> git.ipfire.org Git - people/ms/network.git/commitdiff
networkd: Add methods to check zones/ports for carrier
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 13 Feb 2023 15:34:40 +0000 (15:34 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 13 Feb 2023 15:34:40 +0000 (15:34 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/networkd/port.c
src/networkd/port.h
src/networkd/zone.c
src/networkd/zone.h

index 30bd98f50619d02b8e2fee29208282840ebad50a..c6c8781d105136fdf05242fcd6f5c47d85723fe2 100644 (file)
@@ -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;
+}
index 8861046782935957631fbd64751bd01f8bb88317..33241ed929a45086649d86d58cc8227f01fb4d44 100644 (file)
@@ -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 */
index 1e4abc33c13904aa4f7b7711112af801d7d3127c..8fe07c5c06d17e00e01de21bd26a1266af6c3dac 100644 (file)
@@ -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
 */
index 088bb2f55faf054834124351d647429e4a878312..f5a2355ef9d517ec9c0cb72ceff0788d3ecb1624 100644 (file)
@@ -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
 */