]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
netlink: move resolve_ifname() or friends to netlink-util.[ch]
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 9 Jun 2021 21:01:44 +0000 (06:01 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 11 Jun 2021 18:19:08 +0000 (03:19 +0900)
src/libsystemd/sd-netlink/netlink-util.c
src/libsystemd/sd-netlink/netlink-util.h
src/network/networkctl.c
src/nspawn/nspawn-network.c
src/resolve/resolvectl.c
src/shared/socket-netlink.c
src/shared/socket-netlink.h

index 868763bb9c0c7b318fd3640f231458e7a2608976..0650f0b47523b8463abc789a47bfdb4f958c1a34 100644 (file)
@@ -6,6 +6,7 @@
 #include "memory-util.h"
 #include "netlink-internal.h"
 #include "netlink-util.h"
+#include "parse-util.h"
 #include "strv.h"
 
 int rtnl_set_link_name(sd_netlink **rtnl, int ifindex, const char *name) {
@@ -302,6 +303,44 @@ int rtnl_resolve_link_alternative_name(sd_netlink **rtnl, const char *name) {
         return ret;
 }
 
+int rtnl_resolve_ifname(sd_netlink **rtnl, const char *name) {
+        int r;
+
+        /* Like if_nametoindex, but resolves "alternative names" too. */
+
+        assert(name);
+
+        r = if_nametoindex(name);
+        if (r > 0)
+                return r;
+
+        return rtnl_resolve_link_alternative_name(rtnl, name);
+}
+
+int rtnl_resolve_interface(sd_netlink **rtnl, const char *name) {
+        int r;
+
+        /* Like rtnl_resolve_ifname, but resolves interface numbers too. */
+
+        assert(name);
+
+        r = parse_ifindex(name);
+        if (r > 0)
+                return r;
+        assert(r < 0);
+
+        return rtnl_resolve_ifname(rtnl, name);
+}
+
+int rtnl_resolve_interface_or_warn(sd_netlink **rtnl, const char *name) {
+        int r;
+
+        r = rtnl_resolve_interface(rtnl, name);
+        if (r < 0)
+                return log_error_errno(r, "Failed to resolve interface \"%s\": %m", name);
+        return r;
+}
+
 int rtnl_get_link_info(sd_netlink **rtnl, int ifindex, unsigned short *ret_iftype, unsigned *ret_flags) {
         _cleanup_(sd_netlink_message_unrefp) sd_netlink_message *message = NULL, *reply = NULL;
         unsigned short iftype;
index c676c07135e7ddc8cb01917f987bdb4c69abf0fe..a4cdaaf8bd4c2c45a9cbc970137cc0c6ed2b4f5f 100644 (file)
@@ -92,6 +92,9 @@ int rtnl_set_link_alternative_names(sd_netlink **rtnl, int ifindex, char * const
 int rtnl_set_link_alternative_names_by_ifname(sd_netlink **rtnl, const char *ifname, char * const *alternative_names);
 int rtnl_delete_link_alternative_names(sd_netlink **rtnl, int ifindex, char * const *alternative_names);
 int rtnl_resolve_link_alternative_name(sd_netlink **rtnl, const char *name);
+int rtnl_resolve_ifname(sd_netlink **rtnl, const char *name);
+int rtnl_resolve_interface(sd_netlink **rtnl, const char *name);
+int rtnl_resolve_interface_or_warn(sd_netlink **rtnl, const char *name);
 int rtnl_get_link_info(sd_netlink **rtnl, int ifindex, unsigned short *ret_iftype, unsigned *ret_flags);
 
 int rtnl_log_parse_error(int r);
index a3ba15672b498368891987a051ba651ae33ce0a4..343dea3ed64d674382175f98cd2cac151a754b85 100644 (file)
@@ -2665,7 +2665,7 @@ static int link_up_down(int argc, char *argv[], void *userdata) {
                 return log_oom();
 
         for (int i = 1; i < argc; i++) {
-                index = resolve_interface_or_warn(&rtnl, argv[i]);
+                index = rtnl_resolve_interface_or_warn(&rtnl, argv[i]);
                 if (index < 0)
                         return index;
 
@@ -2703,7 +2703,7 @@ static int link_delete(int argc, char *argv[], void *userdata) {
                 return log_oom();
 
         for (int i = 1; i < argc; i++) {
-                index = resolve_interface_or_warn(&rtnl, argv[i]);
+                index = rtnl_resolve_interface_or_warn(&rtnl, argv[i]);
                 if (index < 0)
                         return index;
 
@@ -2748,7 +2748,7 @@ static int link_renew(int argc, char *argv[], void *userdata) {
                 return log_error_errno(r, "Failed to connect system bus: %m");
 
         for (int i = 1; i < argc; i++) {
-                index = resolve_interface_or_warn(&rtnl, argv[i]);
+                index = rtnl_resolve_interface_or_warn(&rtnl, argv[i]);
                 if (index < 0)
                         return index;
 
@@ -2782,7 +2782,7 @@ static int link_force_renew(int argc, char *argv[], void *userdata) {
                 return log_error_errno(r, "Failed to connect system bus: %m");
 
         for (int i = 1; i < argc; i++) {
-                int index = resolve_interface_or_warn(&rtnl, argv[i]);
+                int index = rtnl_resolve_interface_or_warn(&rtnl, argv[i]);
                 if (index < 0)
                         return index;
 
@@ -2827,7 +2827,7 @@ static int verb_reconfigure(int argc, char *argv[], void *userdata) {
                 return log_oom();
 
         for (int i = 1; i < argc; i++) {
-                index = resolve_interface_or_warn(&rtnl, argv[i]);
+                index = rtnl_resolve_interface_or_warn(&rtnl, argv[i]);
                 if (index < 0)
                         return index;
 
index 95e4b0213b5615331b2364650c35d57358c66f25..1f0d27475787ee4e0d2f40fd4d99a072733a5fc8 100644 (file)
@@ -272,7 +272,7 @@ int setup_veth(const char *machine_name,
         if (r < 0)
                 return r;
 
-        u = if_nametoindex(n); /* We don't need to use resolve_ifname() here because the
+        u = if_nametoindex(n); /* We don't need to use rtnl_resolve_ifname() here because the
                                 * name we assigned is always the main name. */
         if (u == 0)
                 return log_error_errno(errno, "Failed to resolve interface %s: %m", n);
@@ -330,7 +330,7 @@ static int join_bridge(sd_netlink *rtnl, const char *veth_name, const char *brid
         assert(veth_name);
         assert(bridge_name);
 
-        bridge_ifi = resolve_interface(&rtnl, bridge_name);
+        bridge_ifi = rtnl_resolve_interface(&rtnl, bridge_name);
         if (bridge_ifi < 0)
                 return bridge_ifi;
 
@@ -475,7 +475,7 @@ int test_network_interface_initialized(const char *name) {
 
         /* udev should be around. */
 
-        ifi = resolve_interface_or_warn(NULL, name);
+        ifi = rtnl_resolve_interface_or_warn(NULL, name);
         if (ifi < 0)
                 return ifi;
 
@@ -515,7 +515,7 @@ int move_network_interfaces(int netns_fd, char **ifaces) {
                 _cleanup_(sd_netlink_message_unrefp) sd_netlink_message *m = NULL;
                 int ifi;
 
-                ifi = resolve_interface_or_warn(&rtnl, *i);
+                ifi = rtnl_resolve_interface_or_warn(&rtnl, *i);
                 if (ifi < 0)
                         return ifi;
 
@@ -554,7 +554,7 @@ int setup_macvlan(const char *machine_name, pid_t pid, char **ifaces) {
                 struct ether_addr mac;
                 int ifi;
 
-                ifi = resolve_interface_or_warn(&rtnl, *i);
+                ifi = rtnl_resolve_interface_or_warn(&rtnl, *i);
                 if (ifi < 0)
                         return ifi;
 
@@ -640,7 +640,7 @@ int setup_ipvlan(const char *machine_name, pid_t pid, char **ifaces) {
                 _cleanup_free_ char *n = NULL, *a = NULL;
                 int ifi;
 
-                ifi = resolve_interface_or_warn(&rtnl, *i);
+                ifi = rtnl_resolve_interface_or_warn(&rtnl, *i);
                 if (ifi < 0)
                         return ifi;
 
index e652c82ffcb19d3d2253c19eb7f9e45b3c8e07f2..23f4ff1077b83629639a7d4503bb0f1a4966b31e 100644 (file)
@@ -119,7 +119,7 @@ int ifname_mangle(const char *s) {
         if (!iface)
                 return log_oom();
 
-        ifi = resolve_interface(NULL, iface);
+        ifi = rtnl_resolve_interface(NULL, iface);
         if (ifi < 0) {
                 if (ifi == -ENODEV && arg_ifindex_permissive) {
                         log_debug("Interface '%s' not found, but -f specified, ignoring.", iface);
@@ -2018,7 +2018,7 @@ static int verb_status(int argc, char **argv, void *userdata) {
                 STRV_FOREACH(ifname, argv + 1) {
                         int ifindex, q;
 
-                        ifindex = resolve_interface(&rtnl, *ifname);
+                        ifindex = rtnl_resolve_interface(&rtnl, *ifname);
                         if (ifindex < 0) {
                                 log_warning_errno(ifindex, "Failed to resolve interface \"%s\", ignoring: %m", *ifname);
                                 continue;
index 4a7007d06e509d3c7f6a0957b082c133d13e4f8e..0c044378265f06c45dcfd5a584d0a2984766f731 100644 (file)
 #include "socket-util.h"
 #include "string-util.h"
 
-int resolve_ifname(sd_netlink **rtnl, const char *name) {
-        int r;
-
-        /* Like if_nametoindex, but resolves "alternative names" too. */
-
-        assert(name);
-
-        r = if_nametoindex(name);
-        if (r > 0)
-                return r;
-
-        return rtnl_resolve_link_alternative_name(rtnl, name);
-}
-
-int resolve_interface(sd_netlink **rtnl, const char *name) {
-        int r;
-
-        /* Like resolve_ifname, but resolves interface numbers too. */
-
-        assert(name);
-
-        r = parse_ifindex(name);
-        if (r > 0)
-                return r;
-        assert(r < 0);
-
-        return resolve_ifname(rtnl, name);
-}
-
-int resolve_interface_or_warn(sd_netlink **rtnl, const char *name) {
-        int r;
-
-        r = resolve_interface(rtnl, name);
-        if (r < 0)
-                return log_error_errno(r, "Failed to resolve interface \"%s\": %m", name);
-        return r;
-}
-
 int socket_address_parse(SocketAddress *a, const char *s) {
         _cleanup_free_ char *n = NULL;
         char *e;
@@ -338,7 +300,7 @@ int in_addr_port_ifindex_name_from_string_auto(
                         return -EINVAL; /* We want to return -EINVAL for syntactically invalid names,
                                          * and -ENODEV for valid but nonexistent interfaces. */
 
-                ifindex = resolve_interface(NULL, m + 1);
+                ifindex = rtnl_resolve_interface(NULL, m + 1);
                 if (ifindex < 0)
                         return ifindex;
 
index eac599159db82e49df9411c7cf154a3220980214..6256a831bac3fefb09cd00e440ca16776b971549 100644 (file)
@@ -1,16 +1,10 @@
 /* SPDX-License-Identifier: LGPL-2.1-or-later */
 #pragma once
 
-#include "sd-netlink.h"
-
 #include "in-addr-util.h"
 #include "macro.h"
 #include "socket-util.h"
 
-int resolve_ifname(sd_netlink **rtnl, const char *name);
-int resolve_interface(sd_netlink **rtnl, const char *name);
-int resolve_interface_or_warn(sd_netlink **rtnl, const char *name);
-
 int make_socket_fd(int log_level, const char* address, int type, int flags);
 
 int socket_address_parse(SocketAddress *a, const char *s);