about summary refs log tree commit diff
path: root/src/core/dhcp/nm-dhcp-utils.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/dhcp/nm-dhcp-utils.h')
-rw-r--r--src/core/dhcp/nm-dhcp-utils.h70
1 files changed, 70 insertions, 0 deletions
diff --git a/src/core/dhcp/nm-dhcp-utils.h b/src/core/dhcp/nm-dhcp-utils.h
new file mode 100644
index 00000000..69715f90
--- /dev/null
+++ b/src/core/dhcp/nm-dhcp-utils.h
@@ -0,0 +1,70 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * Copyright (C) 2014 Red Hat, Inc.
+ */
+
+#ifndef __NETWORKMANAGER_DHCP_UTILS_H__
+#define __NETWORKMANAGER_DHCP_UTILS_H__
+
+#include <stdlib.h>
+
+#include "nm-ip4-config.h"
+#include "nm-ip6-config.h"
+
+NMIP4Config *nm_dhcp_utils_ip4_config_from_options(struct _NMDedupMultiIndex *multi_idx,
+                                                   int                        ifindex,
+                                                   const char *               iface,
+                                                   GHashTable *               options,
+                                                   guint32                    route_table,
+                                                   guint32                    route_metric);
+
+NMIP6Config *nm_dhcp_utils_ip6_config_from_options(struct _NMDedupMultiIndex *multi_idx,
+                                                   int                        ifindex,
+                                                   const char *               iface,
+                                                   GHashTable *               options,
+                                                   gboolean                   info_only);
+
+NMPlatformIP6Address nm_dhcp_utils_ip6_prefix_from_options(GHashTable *options);
+
+char *nm_dhcp_utils_duid_to_string(GBytes *duid);
+
+GBytes *nm_dhcp_utils_client_id_string_to_bytes(const char *client_id);
+
+gboolean nm_dhcp_utils_get_leasefile_path(int         addr_family,
+                                          const char *plugin_name,
+                                          const char *iface,
+                                          const char *uuid,
+                                          char **     out_leasefile_path);
+
+char *nm_dhcp_utils_get_dhcp6_event_id(GHashTable *lease);
+
+/*****************************************************************************/
+
+static inline gboolean
+nm_dhcp_lease_data_consume(const uint8_t **datap, size_t *n_datap, void *out, size_t n_out)
+{
+    if (*n_datap < n_out)
+        return FALSE;
+
+    memcpy(out, *datap, n_out);
+    *datap += n_out;
+    *n_datap -= n_out;
+    return TRUE;
+}
+
+static inline gboolean
+nm_dhcp_lease_data_consume_in_addr(const uint8_t **datap, size_t *n_datap, in_addr_t *addrp)
+{
+    return nm_dhcp_lease_data_consume(datap, n_datap, addrp, sizeof(struct in_addr));
+}
+
+char *nm_dhcp_lease_data_parse_domain_validate(const char *str);
+
+gboolean nm_dhcp_lease_data_parse_u16(const guint8 *data, gsize n_data, guint16 *out_val);
+gboolean nm_dhcp_lease_data_parse_mtu(const guint8 *data, gsize n_data, guint16 *out_val);
+gboolean nm_dhcp_lease_data_parse_cstr(const guint8 *data, gsize n_data, gsize *out_new_len);
+gboolean nm_dhcp_lease_data_parse_domain(const guint8 *data, gsize n_data, char **out_val);
+gboolean nm_dhcp_lease_data_parse_in_addr(const guint8 *data, gsize n_data, in_addr_t *out_val);
+char **  nm_dhcp_lease_data_parse_search_list(const guint8 *data, gsize n_data);
+
+#endif /* __NETWORKMANAGER_DHCP_UTILS_H__ */