summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2021-02-09 21:12:35 +0100
committerThomas Haller <thaller@redhat.com>2021-02-11 09:23:08 +0100
commit89773b87393112c16f02f0d47e3f848354ed3e4f (patch)
tree624bb881194c467ac2dd88220b71765610f4107e
parentde14a376ffbd08b00732ef491cb7cc15b6ab3416 (diff)
downloadNetworkManager-89773b87393112c16f02f0d47e3f848354ed3e4f.tar.gz
dhcp/nettools: refactor parsing of DHCP lease (metered)
-rw-r--r--src/core/dhcp/nm-dhcp-nettools.c27
1 files changed, 8 insertions, 19 deletions
diff --git a/src/core/dhcp/nm-dhcp-nettools.c b/src/core/dhcp/nm-dhcp-nettools.c
index 14b788e38d..6a8155f336 100644
--- a/src/core/dhcp/nm-dhcp-nettools.c
+++ b/src/core/dhcp/nm-dhcp-nettools.c
@@ -690,24 +690,6 @@ lease_parse_routes(NDhcp4ClientLease *lease,
}
static void
-lease_parse_metered(NDhcp4ClientLease *lease, NMIP4Config *ip4_config, GHashTable *options)
-{
- gboolean metered = FALSE;
- uint8_t *data;
- size_t n_data;
- int r;
-
- r = n_dhcp4_client_lease_query(lease, NM_DHCP_OPTION_DHCP4_VENDOR_SPECIFIC, &data, &n_data);
- if (r)
- metered = FALSE;
- else
- metered = !!memmem(data, n_data, "ANDROID_METERED", NM_STRLEN("ANDROID_METERED"));
-
- /* TODO: expose the vendor specific option when present */
- nm_ip4_config_set_metered(ip4_config, metered);
-}
-
-static void
lease_parse_ntps(NDhcp4ClientLease *lease, GHashTable *options)
{
nm_auto_free_gstring GString *str = NULL;
@@ -961,6 +943,7 @@ lease_to_ip4_config(NMDedupMultiIndex *multi_idx,
guint8 * l_data;
gsize l_data_len;
guint16 v_u16;
+ gboolean v_bool;
int r;
g_return_val_if_fail(lease != NULL, NULL);
@@ -987,7 +970,13 @@ lease_to_ip4_config(NMDedupMultiIndex *multi_idx,
nm_ip4_config_set_mtu(ip4_config, v_u16, NM_IP_CONFIG_SOURCE_DHCP);
}
- lease_parse_metered(lease, ip4_config, options);
+ r = n_dhcp4_client_lease_query(lease,
+ NM_DHCP_OPTION_DHCP4_VENDOR_SPECIFIC,
+ &l_data,
+ &l_data_len);
+ v_bool =
+ (r == 0) && memmem(l_data, l_data_len, "ANDROID_METERED", NM_STRLEN("ANDROID_METERED"));
+ nm_ip4_config_set_metered(ip4_config, v_bool);
lease_parse_hostname(lease, options);
lease_parse_ntps(lease, options);