]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: json: add more link information
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sun, 14 Nov 2021 09:11:27 +0000 (18:11 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 25 Nov 2021 13:35:35 +0000 (22:35 +0900)
src/network/networkd-json.c

index 46397588e1b104567e321a2ec833393c4b0994ef..daf4f0085abaa7ab3e5c43df4bb6d0237bab692e 100644 (file)
@@ -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)),