X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fnetwork%2Fnetworkctl.c;h=47e918d402b38dd8c277ae81db5b94c5da69c2a8;hb=38de08a7e476bb78b02fa5480ca3d038eedd66e7;hp=397a0d31d2494543b019239e0a11afb6e3397930;hpb=6d0c65ffb4f82e8c6dceb453919b3db54343fc27;p=elogind.git diff --git a/src/network/networkctl.c b/src/network/networkctl.c index 397a0d31d..47e918d40 100644 --- a/src/network/networkctl.c +++ b/src/network/networkctl.c @@ -396,14 +396,40 @@ static int link_status(char **args, unsigned n) { char **name; int r; + r = sd_rtnl_open(&rtnl, 0); + if (r < 0) { + log_error("Failed to connect to netlink: %s", strerror(-r)); + return r; + } + + udev = udev_new(); + if (!udev) { + log_error("Failed to connect to udev: %m"); + return -errno; + } + if (n <= 1 && !arg_all) { _cleanup_free_ char *operational_state = NULL; _cleanup_strv_free_ char **dns = NULL, **ntp = NULL; + _cleanup_free_ struct local_address *addresses = NULL; + int i, c; sd_network_get_operational_state(&operational_state); if (operational_state) printf(" State: %s\n", operational_state); + c = local_addresses(rtnl, 0, &addresses); + for (i = 0; i < c; i++) { + _cleanup_free_ char *pretty = NULL; + + r = in_addr_to_string(addresses[i].family, &addresses[i].address, &pretty); + if (r < 0) + return log_oom(); + + printf("%13s %s\n", + i > 0 ? "" : "Address:", pretty); + } + sd_network_get_dns(&dns); if (!strv_isempty(dns)) dump_list(" DNS: ", dns); @@ -417,18 +443,6 @@ static int link_status(char **args, unsigned n) { pager_open_if_enabled(); - r = sd_rtnl_open(&rtnl, 0); - if (r < 0) { - log_error("Failed to connect to netlink: %s", strerror(-r)); - return r; - } - - udev = udev_new(); - if (!udev) { - log_error("Failed to connect to udev: %m"); - return -errno; - } - if (arg_all) { _cleanup_rtnl_message_unref_ sd_rtnl_message *req = NULL, *reply = NULL; _cleanup_free_ LinkInfo *links = NULL;