]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-network: introduce sd_network_link_get_stat()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 7 Dec 2021 18:15:08 +0000 (03:15 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 8 Dec 2021 09:34:04 +0000 (18:34 +0900)
src/libsystemd/sd-network/sd-network.c
src/systemd/sd-network.h

index 593d5c9d7c263678364818f0111a3fad2d77dadd..e1e9a399c161ff780b63e23a8f8e4fcb16f2c9c2 100644 (file)
@@ -387,6 +387,23 @@ int sd_network_link_get_carrier_bound_by(int ifindex, int **ret) {
         return network_link_get_ifindexes(ifindex, "CARRIER_BOUND_BY", ret);
 }
 
+int sd_network_link_get_stat(int ifindex, struct stat *ret) {
+        char path[STRLEN("/run/systemd/netif/links/") + DECIMAL_STR_MAX(ifindex)];
+        struct stat st;
+
+        assert_return(ifindex > 0, -EINVAL);
+
+        xsprintf(path, "/run/systemd/netif/links/%i", ifindex);
+
+        if (stat(path, &st) < 0)
+                return -errno;
+
+        if (ret)
+                *ret = st;
+
+        return 0;
+}
+
 static int MONITOR_TO_FD(sd_network_monitor *m) {
         return (int) (unsigned long) m - 1;
 }
index 776f6b5243ee826044da65d9d684e8acae506b38..a74a4964b77814eb50292684fcd1c7355f796275 100644 (file)
@@ -18,6 +18,7 @@
 ***/
 
 #include <inttypes.h>
+#include <sys/stat.h>
 #include <sys/types.h>
 
 #include "_sd-common.h"
@@ -187,6 +188,8 @@ int sd_network_link_get_dhcp6_client_iaid_string(int ifindex, char **iaid);
 /* Get DHCPv6 client DUID for a given link. */
 int sd_network_link_get_dhcp6_client_duid_string(int ifindex, char **duid);
 
+int sd_network_link_get_stat(int ifindex, struct stat *ret);
+
 /* Monitor object */
 typedef struct sd_network_monitor sd_network_monitor;