From: Yu Watanabe Date: Sun, 14 Nov 2021 09:11:27 +0000 (+0900) Subject: network: json: add more link information X-Git-Tag: v250-rc1~143^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=da7c995b67c49eb511e8a555769abe36605ee2e1;p=thirdparty%2Fsystemd.git network: json: add more link information --- diff --git a/src/network/networkd-json.c b/src/network/networkd-json.c index 46397588e1b..daf4f0085ab 100644 --- a/src/network/networkd-json.c +++ b/src/network/networkd-json.c @@ -16,6 +16,7 @@ #include "networkd-routing-policy-rule.h" #include "sort-util.h" #include "user-util.h" +#include "wifi-util.h" static int address_build_json(Address *address, JsonVariant **ret) { _cleanup_(json_variant_unrefp) JsonVariant *v = NULL; @@ -492,7 +493,7 @@ static int device_build_json(sd_device *device, JsonVariant **ret) { int link_build_json(Link *link, JsonVariant **ret) { _cleanup_(json_variant_unrefp) JsonVariant *v = NULL, *w = NULL; - _cleanup_free_ char *type = NULL; + _cleanup_free_ char *type = NULL, *flags = NULL; int r; assert(link); @@ -502,12 +503,39 @@ int link_build_json(Link *link, JsonVariant **ret) { if (r == -ENOMEM) return r; + r = link_flags_to_string_alloc(link->flags, &flags); + if (r < 0) + return r; + r = json_build(&v, JSON_BUILD_OBJECT( + /* basic information */ JSON_BUILD_PAIR_INTEGER("Index", link->ifindex), JSON_BUILD_PAIR_STRING("Name", link->ifname), JSON_BUILD_PAIR_STRV_NON_EMPTY("AlternativeNames", link->alternative_names), + JSON_BUILD_PAIR_CONDITION(link->master_ifindex > 0, + "MasterInterfaceIndex", JSON_BUILD_INTEGER(link->master_ifindex)), + JSON_BUILD_PAIR_STRING_NON_EMPTY("Kind", link->kind), JSON_BUILD_PAIR_STRING("Type", type), JSON_BUILD_PAIR_STRING_NON_EMPTY("Driver", link->driver), + JSON_BUILD_PAIR_UNSIGNED("Flags", link->flags), + JSON_BUILD_PAIR_STRING("FlagsString", flags), + JSON_BUILD_PAIR_UNSIGNED("KernelOperationalState", link->kernel_operstate), + JSON_BUILD_PAIR_STRING("KernelOperationalStateString", kernel_operstate_to_string(link->kernel_operstate)), + JSON_BUILD_PAIR_UNSIGNED("MTU", link->mtu), + JSON_BUILD_PAIR_UNSIGNED("MinimumMTU", link->min_mtu), + JSON_BUILD_PAIR_UNSIGNED("MaximumMTU", link->max_mtu), + JSON_BUILD_PAIR_HW_ADDR_NON_NULL("HardwareAddress", &link->hw_addr), + JSON_BUILD_PAIR_HW_ADDR_NON_NULL("PermanentHardwareAddress", &link->permanent_hw_addr), + JSON_BUILD_PAIR_HW_ADDR_NON_NULL("BroadcastAddress", &link->bcast_addr), + JSON_BUILD_PAIR_IN6_ADDR_NON_NULL("IPv6LinkLocalAddress", &link->ipv6ll_address), + /* wlan information */ + JSON_BUILD_PAIR_CONDITION(link->wlan_iftype > 0, "WirelessLanInterfaceType", + JSON_BUILD_UNSIGNED(link->wlan_iftype)), + JSON_BUILD_PAIR_CONDITION(link->wlan_iftype > 0, "WirelessLanInterfaceTypeString", + JSON_BUILD_STRING(nl80211_iftype_to_string(link->wlan_iftype))), + JSON_BUILD_PAIR_STRING_NON_EMPTY("SSID", link->ssid), + JSON_BUILD_PAIR_ETHER_ADDR_NON_NULL("BSSID", &link->bssid), + /* link state */ JSON_BUILD_PAIR_STRING("SetupState", link_state_to_string(link->state)), JSON_BUILD_PAIR_STRING("OperationalState", link_operstate_to_string(link->operstate)), JSON_BUILD_PAIR_STRING("CarrierState", link_carrier_state_to_string(link->carrier_state)),