X Tutup
Skip to content

Commit f6e4915

Browse files
committed
netlink: move resolve_ifname() or friends to netlink-util.[ch]
1 parent f0ad7ae commit f6e4915

File tree

7 files changed

+56
-58
lines changed

7 files changed

+56
-58
lines changed

src/libsystemd/sd-netlink/netlink-util.c

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include "memory-util.h"
77
#include "netlink-internal.h"
88
#include "netlink-util.h"
9+
#include "parse-util.h"
910
#include "strv.h"
1011

1112
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) {
302303
return ret;
303304
}
304305

306+
int rtnl_resolve_ifname(sd_netlink **rtnl, const char *name) {
307+
int r;
308+
309+
/* Like if_nametoindex, but resolves "alternative names" too. */
310+
311+
assert(name);
312+
313+
r = if_nametoindex(name);
314+
if (r > 0)
315+
return r;
316+
317+
return rtnl_resolve_link_alternative_name(rtnl, name);
318+
}
319+
320+
int rtnl_resolve_interface(sd_netlink **rtnl, const char *name) {
321+
int r;
322+
323+
/* Like rtnl_resolve_ifname, but resolves interface numbers too. */
324+
325+
assert(name);
326+
327+
r = parse_ifindex(name);
328+
if (r > 0)
329+
return r;
330+
assert(r < 0);
331+
332+
return rtnl_resolve_ifname(rtnl, name);
333+
}
334+
335+
int rtnl_resolve_interface_or_warn(sd_netlink **rtnl, const char *name) {
336+
int r;
337+
338+
r = rtnl_resolve_interface(rtnl, name);
339+
if (r < 0)
340+
return log_error_errno(r, "Failed to resolve interface \"%s\": %m", name);
341+
return r;
342+
}
343+
305344
int rtnl_get_link_info(sd_netlink **rtnl, int ifindex, unsigned short *ret_iftype, unsigned *ret_flags) {
306345
_cleanup_(sd_netlink_message_unrefp) sd_netlink_message *message = NULL, *reply = NULL;
307346
unsigned short iftype;

src/libsystemd/sd-netlink/netlink-util.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,9 @@ int rtnl_set_link_alternative_names(sd_netlink **rtnl, int ifindex, char * const
9292
int rtnl_set_link_alternative_names_by_ifname(sd_netlink **rtnl, const char *ifname, char * const *alternative_names);
9393
int rtnl_delete_link_alternative_names(sd_netlink **rtnl, int ifindex, char * const *alternative_names);
9494
int rtnl_resolve_link_alternative_name(sd_netlink **rtnl, const char *name);
95+
int rtnl_resolve_ifname(sd_netlink **rtnl, const char *name);
96+
int rtnl_resolve_interface(sd_netlink **rtnl, const char *name);
97+
int rtnl_resolve_interface_or_warn(sd_netlink **rtnl, const char *name);
9598
int rtnl_get_link_info(sd_netlink **rtnl, int ifindex, unsigned short *ret_iftype, unsigned *ret_flags);
9699

97100
int rtnl_log_parse_error(int r);

src/network/networkctl.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2665,7 +2665,7 @@ static int link_up_down(int argc, char *argv[], void *userdata) {
26652665
return log_oom();
26662666

26672667
for (int i = 1; i < argc; i++) {
2668-
index = resolve_interface_or_warn(&rtnl, argv[i]);
2668+
index = rtnl_resolve_interface_or_warn(&rtnl, argv[i]);
26692669
if (index < 0)
26702670
return index;
26712671

@@ -2703,7 +2703,7 @@ static int link_delete(int argc, char *argv[], void *userdata) {
27032703
return log_oom();
27042704

27052705
for (int i = 1; i < argc; i++) {
2706-
index = resolve_interface_or_warn(&rtnl, argv[i]);
2706+
index = rtnl_resolve_interface_or_warn(&rtnl, argv[i]);
27072707
if (index < 0)
27082708
return index;
27092709

@@ -2748,7 +2748,7 @@ static int link_renew(int argc, char *argv[], void *userdata) {
27482748
return log_error_errno(r, "Failed to connect system bus: %m");
27492749

27502750
for (int i = 1; i < argc; i++) {
2751-
index = resolve_interface_or_warn(&rtnl, argv[i]);
2751+
index = rtnl_resolve_interface_or_warn(&rtnl, argv[i]);
27522752
if (index < 0)
27532753
return index;
27542754

@@ -2782,7 +2782,7 @@ static int link_force_renew(int argc, char *argv[], void *userdata) {
27822782
return log_error_errno(r, "Failed to connect system bus: %m");
27832783

27842784
for (int i = 1; i < argc; i++) {
2785-
int index = resolve_interface_or_warn(&rtnl, argv[i]);
2785+
int index = rtnl_resolve_interface_or_warn(&rtnl, argv[i]);
27862786
if (index < 0)
27872787
return index;
27882788

@@ -2827,7 +2827,7 @@ static int verb_reconfigure(int argc, char *argv[], void *userdata) {
28272827
return log_oom();
28282828

28292829
for (int i = 1; i < argc; i++) {
2830-
index = resolve_interface_or_warn(&rtnl, argv[i]);
2830+
index = rtnl_resolve_interface_or_warn(&rtnl, argv[i]);
28312831
if (index < 0)
28322832
return index;
28332833

src/nspawn/nspawn-network.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ int setup_veth(const char *machine_name,
272272
if (r < 0)
273273
return r;
274274

275-
u = if_nametoindex(n); /* We don't need to use resolve_ifname() here because the
275+
u = if_nametoindex(n); /* We don't need to use rtnl_resolve_ifname() here because the
276276
* name we assigned is always the main name. */
277277
if (u == 0)
278278
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
330330
assert(veth_name);
331331
assert(bridge_name);
332332

333-
bridge_ifi = resolve_interface(&rtnl, bridge_name);
333+
bridge_ifi = rtnl_resolve_interface(&rtnl, bridge_name);
334334
if (bridge_ifi < 0)
335335
return bridge_ifi;
336336

@@ -475,7 +475,7 @@ int test_network_interface_initialized(const char *name) {
475475

476476
/* udev should be around. */
477477

478-
ifi = resolve_interface_or_warn(NULL, name);
478+
ifi = rtnl_resolve_interface_or_warn(NULL, name);
479479
if (ifi < 0)
480480
return ifi;
481481

@@ -515,7 +515,7 @@ int move_network_interfaces(int netns_fd, char **ifaces) {
515515
_cleanup_(sd_netlink_message_unrefp) sd_netlink_message *m = NULL;
516516
int ifi;
517517

518-
ifi = resolve_interface_or_warn(&rtnl, *i);
518+
ifi = rtnl_resolve_interface_or_warn(&rtnl, *i);
519519
if (ifi < 0)
520520
return ifi;
521521

@@ -554,7 +554,7 @@ int setup_macvlan(const char *machine_name, pid_t pid, char **ifaces) {
554554
struct ether_addr mac;
555555
int ifi;
556556

557-
ifi = resolve_interface_or_warn(&rtnl, *i);
557+
ifi = rtnl_resolve_interface_or_warn(&rtnl, *i);
558558
if (ifi < 0)
559559
return ifi;
560560

@@ -640,7 +640,7 @@ int setup_ipvlan(const char *machine_name, pid_t pid, char **ifaces) {
640640
_cleanup_free_ char *n = NULL, *a = NULL;
641641
int ifi;
642642

643-
ifi = resolve_interface_or_warn(&rtnl, *i);
643+
ifi = rtnl_resolve_interface_or_warn(&rtnl, *i);
644644
if (ifi < 0)
645645
return ifi;
646646

src/resolve/resolvectl.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ int ifname_mangle(const char *s) {
119119
if (!iface)
120120
return log_oom();
121121

122-
ifi = resolve_interface(NULL, iface);
122+
ifi = rtnl_resolve_interface(NULL, iface);
123123
if (ifi < 0) {
124124
if (ifi == -ENODEV && arg_ifindex_permissive) {
125125
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) {
20182018
STRV_FOREACH(ifname, argv + 1) {
20192019
int ifindex, q;
20202020

2021-
ifindex = resolve_interface(&rtnl, *ifname);
2021+
ifindex = rtnl_resolve_interface(&rtnl, *ifname);
20222022
if (ifindex < 0) {
20232023
log_warning_errno(ifindex, "Failed to resolve interface \"%s\", ignoring: %m", *ifname);
20242024
continue;

src/shared/socket-netlink.c

Lines changed: 1 addition & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -16,44 +16,6 @@
1616
#include "socket-util.h"
1717
#include "string-util.h"
1818

19-
int resolve_ifname(sd_netlink **rtnl, const char *name) {
20-
int r;
21-
22-
/* Like if_nametoindex, but resolves "alternative names" too. */
23-
24-
assert(name);
25-
26-
r = if_nametoindex(name);
27-
if (r > 0)
28-
return r;
29-
30-
return rtnl_resolve_link_alternative_name(rtnl, name);
31-
}
32-
33-
int resolve_interface(sd_netlink **rtnl, const char *name) {
34-
int r;
35-
36-
/* Like resolve_ifname, but resolves interface numbers too. */
37-
38-
assert(name);
39-
40-
r = parse_ifindex(name);
41-
if (r > 0)
42-
return r;
43-
assert(r < 0);
44-
45-
return resolve_ifname(rtnl, name);
46-
}
47-
48-
int resolve_interface_or_warn(sd_netlink **rtnl, const char *name) {
49-
int r;
50-
51-
r = resolve_interface(rtnl, name);
52-
if (r < 0)
53-
return log_error_errno(r, "Failed to resolve interface \"%s\": %m", name);
54-
return r;
55-
}
56-
5719
int socket_address_parse(SocketAddress *a, const char *s) {
5820
_cleanup_free_ char *n = NULL;
5921
char *e;
@@ -338,7 +300,7 @@ int in_addr_port_ifindex_name_from_string_auto(
338300
return -EINVAL; /* We want to return -EINVAL for syntactically invalid names,
339301
* and -ENODEV for valid but nonexistent interfaces. */
340302

341-
ifindex = resolve_interface(NULL, m + 1);
303+
ifindex = rtnl_resolve_interface(NULL, m + 1);
342304
if (ifindex < 0)
343305
return ifindex;
344306

src/shared/socket-netlink.h

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,10 @@
11
/* SPDX-License-Identifier: LGPL-2.1-or-later */
22
#pragma once
33

4-
#include "sd-netlink.h"
5-
64
#include "in-addr-util.h"
75
#include "macro.h"
86
#include "socket-util.h"
97

10-
int resolve_ifname(sd_netlink **rtnl, const char *name);
11-
int resolve_interface(sd_netlink **rtnl, const char *name);
12-
int resolve_interface_or_warn(sd_netlink **rtnl, const char *name);
13-
148
int make_socket_fd(int log_level, const char* address, int type, int flags);
159

1610
int socket_address_parse(SocketAddress *a, const char *s);

0 commit comments

Comments
 (0)
X Tutup