From 1fa08e7d1bc614c0e307722c93ff057aee4c12db Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Tue, 8 Oct 2024 11:31:19 +0200 Subject: [PATCH] dhcp: add function nm_dhcp_lease_data_parse_u32() Add a function to parse 32-bit integer values from a DHCP option. --- src/core/dhcp/nm-dhcp-utils.c | 21 +++++++++++++++++++++ src/core/dhcp/nm-dhcp-utils.h | 6 ++++++ 2 files changed, 27 insertions(+) diff --git a/src/core/dhcp/nm-dhcp-utils.c b/src/core/dhcp/nm-dhcp-utils.c index d13439f143..6bac4d077b 100644 --- a/src/core/dhcp/nm-dhcp-utils.c +++ b/src/core/dhcp/nm-dhcp-utils.c @@ -934,6 +934,27 @@ nm_dhcp_lease_data_parse_u16(const guint8 *data, return TRUE; } +gboolean +nm_dhcp_lease_data_parse_u32(const guint8 *data, + gsize n_data, + uint32_t *out_val, + const char *iface, + int addr_family, + guint option) +{ + if (n_data != 4) { + nm_dhcp_lease_log_invalid_option(iface, + addr_family, + option, + "invalid option length %lu", + (unsigned long) n_data); + return FALSE; + } + + *out_val = unaligned_read_be32(data); + return TRUE; +} + gboolean nm_dhcp_lease_data_parse_mtu(const guint8 *data, gsize n_data, diff --git a/src/core/dhcp/nm-dhcp-utils.h b/src/core/dhcp/nm-dhcp-utils.h index 00199b0222..998985249e 100644 --- a/src/core/dhcp/nm-dhcp-utils.h +++ b/src/core/dhcp/nm-dhcp-utils.h @@ -74,6 +74,12 @@ gboolean nm_dhcp_lease_data_parse_u16(const guint8 *data, const char *iface, int addr_family, guint option); +gboolean nm_dhcp_lease_data_parse_u32(const guint8 *data, + gsize n_data, + uint32_t *out_val, + const char *iface, + int addr_family, + guint option); gboolean nm_dhcp_lease_data_parse_mtu(const guint8 *data, gsize n_data, guint16 *out_val,