]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: JSON - Export DHCPv4 client ID
authorSusant Sahani <ssahani@vmware.com>
Tue, 20 Feb 2024 08:33:13 +0000 (14:03 +0530)
committerLuca Boccassi <luca.boccassi@gmail.com>
Wed, 21 Feb 2024 13:52:47 +0000 (13:52 +0000)
Allow networkd to export the DHCP4 client ID which right now we don't support.

src/network/networkd-json.c

index 134fb6bb2aa5d22ea459dbc1fb30f9ef7547561e..7eb23443727ceb2e3afbabe4070243b2c8e6be79 100644 (file)
@@ -1220,6 +1220,29 @@ static int dhcp_client_private_options_append_json(Link *link, JsonVariant **v)
         return json_variant_set_field_non_null(v, "PrivateOptions", array);
 }
 
+static int dhcp_client_id_append_json(Link *link, JsonVariant **v) {
+        const sd_dhcp_client_id *client_id;
+        const void *data;
+        size_t l;
+        int r;
+
+        assert(link);
+        assert(v);
+
+        if (!link->dhcp_client)
+                return 0;
+
+        r = sd_dhcp_client_get_client_id(link->dhcp_client, &client_id);
+        if (r < 0)
+                return 0;
+
+        r = sd_dhcp_client_id_get_raw(client_id, &data, &l);
+        if (r < 0)
+                return 0;
+
+        return json_variant_merge_objectb(v, JSON_BUILD_OBJECT(JSON_BUILD_PAIR_BYTE_ARRAY("ClientIdentifier", data, l)));
+}
+
 static int dhcp_client_append_json(Link *link, JsonVariant **v) {
         _cleanup_(json_variant_unrefp) JsonVariant *w = NULL;
         int r;
@@ -1242,6 +1265,10 @@ static int dhcp_client_append_json(Link *link, JsonVariant **v) {
         if (r < 0)
                 return r;
 
+        r = dhcp_client_id_append_json(link, &w);
+        if (r < 0)
+                return r;
+
         return json_variant_set_field_non_null(v, "DHCPv4Client", w);
 }