mirror of
https://github.com/systemd/systemd.git
synced 2024-12-23 21:35:11 +03:00
networkctl: sort ifindexes in status command
Before: $ networkctl status ● Interfaces: 372, 368, 373, 375, 376, 377, 378, 379, 381, 391, 3, 1201, 1202, 1184, 1610, 9, 8, 1340, 2, 1, 1256, 7 After: $ networkctl status ● Interfaces: 1, 2, 3, 7, 8, 9, 368, 372, 373, 375, 376, 377, 378, 379, 381, 391, 1184, 1201, 1202, 1256, 1340, 1610
This commit is contained in:
parent
dd9a02ce88
commit
a02166297c
@ -9,11 +9,51 @@
|
||||
#include "networkctl-journal.h"
|
||||
#include "networkctl-status-system.h"
|
||||
#include "networkctl-util.h"
|
||||
#include "sort-util.h"
|
||||
#include "strv.h"
|
||||
|
||||
static int ifindex_str_compare_func(char * const *a, char * const *b) {
|
||||
size_t al, bl;
|
||||
int r;
|
||||
|
||||
al = strlen_ptr(*a);
|
||||
bl = strlen_ptr(*b);
|
||||
|
||||
r = CMP(al, bl);
|
||||
if (r != 0)
|
||||
return r;
|
||||
|
||||
return strcmp_ptr(*a, *b);
|
||||
}
|
||||
|
||||
static int get_netifs(char **ret) {
|
||||
_cleanup_strv_free_ char **netifs = NULL;
|
||||
_cleanup_free_ char *joined = NULL;
|
||||
int r;
|
||||
|
||||
assert(ret);
|
||||
|
||||
r = get_files_in_directory("/run/systemd/netif/links/", &netifs);
|
||||
if (IN_SET(r, 0, -ENOENT)) {
|
||||
*ret = NULL;
|
||||
return 0;
|
||||
}
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to list network interfaces: %m");
|
||||
|
||||
typesafe_qsort(netifs, strv_length(netifs), ifindex_str_compare_func);
|
||||
|
||||
joined = strv_join(netifs, ", ");
|
||||
if (!joined)
|
||||
return log_oom();
|
||||
|
||||
*ret = TAKE_PTR(joined);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int system_status(sd_netlink *rtnl, sd_hwdb *hwdb) {
|
||||
_cleanup_free_ char *operational_state = NULL, *online_state = NULL, *netifs_joined = NULL;
|
||||
_cleanup_strv_free_ char **netifs = NULL, **dns = NULL, **ntp = NULL, **search_domains = NULL, **route_domains = NULL;
|
||||
_cleanup_strv_free_ char **dns = NULL, **ntp = NULL, **search_domains = NULL, **route_domains = NULL;
|
||||
const char *on_color_operational, *off_color_operational, *on_color_online;
|
||||
_cleanup_(table_unrefp) Table *table = NULL;
|
||||
int r;
|
||||
@ -33,14 +73,9 @@ int system_status(sd_netlink *rtnl, sd_hwdb *hwdb) {
|
||||
if (arg_full)
|
||||
table_set_width(table, 0);
|
||||
|
||||
r = get_files_in_directory("/run/systemd/netif/links/", &netifs);
|
||||
if (r < 0 && r != -ENOENT)
|
||||
return log_error_errno(r, "Failed to list network interfaces: %m");
|
||||
else if (r > 0) {
|
||||
netifs_joined = strv_join(netifs, ", ");
|
||||
if (!netifs_joined)
|
||||
return log_oom();
|
||||
}
|
||||
r = get_netifs(&netifs_joined);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = table_add_many(table,
|
||||
TABLE_FIELD, "State",
|
||||
|
Loading…
Reference in New Issue
Block a user