From: Yu Watanabe Date: Thu, 30 May 2019 01:22:18 +0000 (+0900) Subject: nspawn: also support ifindex when specifying network interface X-Git-Tag: v243-rc1~341 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a0267b30f8bd6ecdaa36e4195be4e34ffbacc581;p=thirdparty%2Fsystemd.git nspawn: also support ifindex when specifying network interface --- diff --git a/src/nspawn/nspawn-network.c b/src/nspawn/nspawn-network.c index c028b5755a8..d09e12346fc 100644 --- a/src/nspawn/nspawn-network.c +++ b/src/nspawn/nspawn-network.c @@ -1,7 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ #include -#include #include #include "sd-device.h" @@ -14,6 +13,7 @@ #include "missing_network.h" #include "netlink-util.h" #include "nspawn-network.h" +#include "parse-util.h" #include "siphash24.h" #include "socket-util.h" #include "stat-util.h" @@ -202,9 +202,9 @@ int setup_veth(const char *machine_name, if (r < 0) return r; - i = (int) if_nametoindex(iface_name); - if (i <= 0) - return log_error_errno(errno, "Failed to resolve interface %s: %m", iface_name); + r = parse_ifindex_or_ifname(iface_name, &i); + if (r < 0) + return log_error_errno(r, "Failed to resolve interface %s: %m", iface_name); return i; } @@ -258,9 +258,9 @@ static int join_bridge(sd_netlink *rtnl, const char *veth_name, const char *brid assert(veth_name); assert(bridge_name); - bridge_ifi = (int) if_nametoindex(bridge_name); - if (bridge_ifi <= 0) - return -errno; + r = parse_ifindex_or_ifname(bridge_name, &bridge_ifi); + if (r < 0) + return r; r = sd_rtnl_message_new_link(rtnl, &m, RTM_SETLINK, 0); if (r < 0) @@ -398,9 +398,9 @@ static int parse_interface(const char *name) { char ifi_str[2 + DECIMAL_STR_MAX(int)]; int ifi, r; - ifi = (int) if_nametoindex(name); - if (ifi <= 0) - return log_error_errno(errno, "Failed to resolve interface %s: %m", name); + r = parse_ifindex_or_ifname(name, &ifi); + if (r < 0) + return log_error_errno(r, "Failed to resolve interface %s: %m", name); sprintf(ifi_str, "n%i", ifi); r = sd_device_new_from_device_id(&d, ifi_str);