Resolve alternative ifnames wherever we would resolve an interface name

To keep the names manageable, "ifname_or_ifindex" is replaced by "interface".
This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2020-01-12 11:24:35 +01:00
parent fc2ea97ad0
commit d308bb99d2
9 changed files with 47 additions and 58 deletions
+25 -1
View File
@@ -30,6 +30,30 @@ int resolve_ifname(sd_netlink **rtnl, const char *name) {
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;
@@ -318,7 +342,7 @@ int in_addr_ifindex_from_string_auto(const char *s, int *family, union in_addr_u
if (suffix) {
if (ret_ifindex) {
/* If we shall return the interface index, try to parse it */
ifindex = parse_ifindex_or_ifname(suffix + 1);
ifindex = resolve_interface(NULL, suffix + 1);
if (ifindex < 0)
return ifindex;
}
+2
View File
@@ -8,6 +8,8 @@
#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);