mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-02-12 21:57:27 +03:00
sd-network: drop get_ifindices
People should use rtnl for this, and then only query sd-network by the ifindices it finds.
This commit is contained in:
parent
0e8415f2e5
commit
653912918f
1
TODO
1
TODO
@ -29,7 +29,6 @@ Features:
|
||||
releases (probably not even a directory in /run for it)
|
||||
- the order between ipv6 and ipv4 dns servers probably matters,
|
||||
hence the current DNS apis won't suffice
|
||||
- sd_network_get_ifindices() sounds redundant, rtnetlink can do that too
|
||||
|
||||
* resolved:
|
||||
- IDN (?)
|
||||
|
@ -206,64 +206,6 @@ _public_ int sd_network_dhcp_use_ntp(int ifindex) {
|
||||
return network_get_boolean("DHCP_USE_NTP", ifindex);
|
||||
}
|
||||
|
||||
_public_ int sd_network_get_ifindices(int **ifindices) {
|
||||
_cleanup_closedir_ DIR *d;
|
||||
int r = 0;
|
||||
unsigned n = 0;
|
||||
_cleanup_free_ int *l = NULL;
|
||||
|
||||
d = opendir("/run/systemd/netif/links/");
|
||||
if (!d)
|
||||
return -errno;
|
||||
|
||||
for (;;) {
|
||||
struct dirent *de;
|
||||
int k;
|
||||
int ifindex;
|
||||
|
||||
errno = 0;
|
||||
de = readdir(d);
|
||||
if (!de && errno != 0)
|
||||
return -errno;
|
||||
|
||||
if (!de)
|
||||
break;
|
||||
|
||||
dirent_ensure_type(d, de);
|
||||
|
||||
if (!dirent_is_file(de))
|
||||
continue;
|
||||
|
||||
k = safe_atoi(de->d_name, &ifindex);
|
||||
if (k < 0)
|
||||
continue;
|
||||
|
||||
if (ifindices) {
|
||||
if ((unsigned) r >= n) {
|
||||
int *t;
|
||||
|
||||
n = MAX(16, 2*r);
|
||||
t = realloc(l, sizeof(int) * n);
|
||||
if (!t)
|
||||
return -ENOMEM;
|
||||
|
||||
l = t;
|
||||
}
|
||||
|
||||
assert((unsigned) r < n);
|
||||
l[r++] = ifindex;
|
||||
} else
|
||||
r++;
|
||||
}
|
||||
|
||||
if (ifindices) {
|
||||
*ifindices = l;
|
||||
l = NULL;
|
||||
}
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
static inline int MONITOR_TO_FD(sd_network_monitor *m) {
|
||||
return (int) (unsigned long) m - 1;
|
||||
}
|
||||
|
@ -88,10 +88,6 @@ int sd_network_get_dns(int ifindex, struct in_addr **addr);
|
||||
/* Get IPv6 DNS entries statically configured for the link */
|
||||
int sd_network_get_dns6(int ifindex, struct in6_addr **addr);
|
||||
|
||||
/* Get all network interfaces' indices, and store them in *indices. Returns
|
||||
* the number of indices. If indices is NULL, only returns the number of indices. */
|
||||
int sd_network_get_ifindices(int **ifindices);
|
||||
|
||||
/* Monitor object */
|
||||
typedef struct sd_network_monitor sd_network_monitor;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user