From 96d8637ceda382733f027615c36e0beb80abfca1 Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Tue, 19 Apr 2022 18:09:26 +0200 Subject: [PATCH] core: add nm_dhcp_config_get_option_values() Introduce a function to return an array of name-value tuples for DHCP options. --- src/core/nm-dhcp-config.c | 23 +++++++++++++++++++++++ src/core/nm-dhcp-config.h | 3 ++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/core/nm-dhcp-config.c b/src/core/nm-dhcp-config.c index b32c9b7056..394a3a4924 100644 --- a/src/core/nm-dhcp-config.c +++ b/src/core/nm-dhcp-config.c @@ -125,6 +125,29 @@ nm_dhcp_config_set_lease(NMDhcpConfig *self, const NML3ConfigData *l3cd) _notify(self, PROP_OPTIONS); } +NMUtilsNamedValue * +nm_dhcp_config_get_option_values(NMDhcpConfig *self, guint *num) +{ + NMDhcpConfigPrivate *priv = NM_DHCP_CONFIG_GET_PRIVATE(self); + NMDhcpLease *lease; + NMUtilsNamedValue *buffer = NULL; + + if (!priv->l3cd) { + NM_SET_OUT(num, 0); + return NULL; + } + + lease = nm_l3_config_data_get_dhcp_lease(priv->l3cd, nm_dhcp_config_get_addr_family(self)); + nm_utils_named_values_from_strdict_full(nm_dhcp_lease_get_options(lease), + num, + nm_strcmp_p_with_data, + NULL, + NULL, + 0, + &buffer); + return buffer; +} + const char * nm_dhcp_config_get_option(NMDhcpConfig *self, const char *key) { diff --git a/src/core/nm-dhcp-config.h b/src/core/nm-dhcp-config.h index cae0e11aa2..cdca4ef1fb 100644 --- a/src/core/nm-dhcp-config.h +++ b/src/core/nm-dhcp-config.h @@ -30,7 +30,8 @@ int nm_dhcp_config_get_addr_family(NMDhcpConfig *self); void nm_dhcp_config_set_lease(NMDhcpConfig *self, const NML3ConfigData *l3cd); -const char *nm_dhcp_config_get_option(NMDhcpConfig *self, const char *option); +NMUtilsNamedValue *nm_dhcp_config_get_option_values(NMDhcpConfig *self, guint *num); +const char *nm_dhcp_config_get_option(NMDhcpConfig *self, const char *option); GVariant *nm_dhcp_config_get_options(NMDhcpConfig *self);