]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-network: introduce sd_network_link_get_netdev_file{,_dropins}
authorMike Yuan <me@yhndnzj.com>
Sat, 7 Sep 2024 17:59:36 +0000 (19:59 +0200)
committerMike Yuan <me@yhndnzj.com>
Mon, 9 Sep 2024 21:20:42 +0000 (23:20 +0200)
src/libsystemd/sd-network/sd-network.c
src/systemd/sd-network.h

index 9d11dce2e8f8a2806c021384a020f7c19176b5a0..a7d860c8bab8a20254bf83edcfd099bc6663d201 100644 (file)
@@ -159,25 +159,37 @@ int sd_network_link_get_network_file(int ifindex, char **ret) {
         return network_link_get_string(ifindex, "NETWORK_FILE", ret);
 }
 
-int sd_network_link_get_network_file_dropins(int ifindex, char ***ret) {
-        _cleanup_free_ char **sv = NULL, *joined = NULL;
+int sd_network_link_get_netdev_file(int ifindex, char **ret) {
+        return network_link_get_string(ifindex, "NETDEV_FILE", ret);
+}
+
+static int link_get_config_file_dropins_internal(int ifindex, const char *field, char ***ret) {
+        _cleanup_free_ char *s = NULL;
         int r;
 
+        assert(field);
         assert_return(ifindex > 0, -EINVAL);
         assert_return(ret, -EINVAL);
 
-        r = network_link_get_string(ifindex, "NETWORK_FILE_DROPINS", &joined);
+        r = network_link_get_string(ifindex, field, &s);
         if (r < 0)
                 return r;
 
-        r = strv_split_full(&sv, joined, ":", EXTRACT_CUNESCAPE);
+        r = strv_split_full(ret, s, ":", EXTRACT_CUNESCAPE);
         if (r < 0)
                 return r;
 
-        *ret = TAKE_PTR(sv);
         return 0;
 }
 
+int sd_network_link_get_network_file_dropins(int ifindex, char ***ret) {
+        return link_get_config_file_dropins_internal(ifindex, "NETWORK_FILE_DROPINS", ret);
+}
+
+int sd_network_link_get_netdev_file_dropins(int ifindex, char ***ret) {
+        return link_get_config_file_dropins_internal(ifindex, "NETDEV_FILE_DROPINS", ret);
+}
+
 int sd_network_link_get_operational_state(int ifindex, char **ret) {
         return network_link_get_string(ifindex, "OPER_STATE", ret);
 }
index d292719a3e5ffccb5feaef0de4537259610d1a70..d310d238d07b5dca20f9455cf462d545508df621 100644 (file)
@@ -122,6 +122,12 @@ int sd_network_link_get_network_file(int ifindex, char **ret);
 /* Get paths to .network file dropins applied to link */
 int sd_network_link_get_network_file_dropins(int ifindex, char ***ret);
 
+/* Get path to .netdev file associated with link */
+int sd_network_link_get_netdev_file(int ifindex, char **ret);
+
+/* Get path to .netdev file dropins associated with link */
+int sd_network_link_get_netdev_file_dropins(int ifindex, char ***ret);
+
 /* Get DNS entries for a given link. These are string representations of
  * IP addresses */
 int sd_network_link_get_dns(int ifindex, char ***ret);