summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2018-11-14 07:44:07 +0100
committerThomas Haller <thaller@redhat.com>2018-11-14 08:11:41 +0100
commit787f4b57cda7ba03fde412bb7693baf8f5f67ef5 (patch)
tree6bc671cc4475c19c4d1a14898424a18f780dd75c
parente9630e7d5795ff3171b04b817acc0c8d9eb97776 (diff)
downloadNetworkManager-787f4b57cda7ba03fde412bb7693baf8f5f67ef5.tar.gz
dhcp: initialize hostname as construct-property
The hostname property is only initialized once, early on during start. Move the initialization even earlier during object constructions. This effectively makes the hostname an immutable property. This also makes sense, because the hostname is used by IPv4 and IPv6 DHCP instances alike.
-rw-r--r--src/dhcp/nm-dhcp-client.c22
-rw-r--r--src/dhcp/nm-dhcp-client.h3
-rw-r--r--src/dhcp/nm-dhcp-manager.c3
3 files changed, 16 insertions, 12 deletions
diff --git a/src/dhcp/nm-dhcp-client.c b/src/dhcp/nm-dhcp-client.c
index 3f233c4c32..b212901aae 100644
--- a/src/dhcp/nm-dhcp-client.c
+++ b/src/dhcp/nm-dhcp-client.c
@@ -61,6 +61,7 @@ NM_GOBJECT_PROPERTIES_DEFINE (NMDhcpClient,
PROP_ROUTE_TABLE,
PROP_TIMEOUT,
PROP_UUID,
+ PROP_HOSTNAME,
);
typedef struct _NMDhcpClientPrivate {
@@ -506,7 +507,6 @@ gboolean
nm_dhcp_client_start_ip4 (NMDhcpClient *self,
GBytes *client_id,
const char *dhcp_anycast_addr,
- const char *hostname,
const char *last_ip4_address,
GError **error)
{
@@ -526,9 +526,6 @@ nm_dhcp_client_start_ip4 (NMDhcpClient *self,
nm_dhcp_client_set_client_id (self, client_id);
- g_clear_pointer (&priv->hostname, g_free);
- priv->hostname = g_strdup (hostname);
-
return NM_DHCP_CLIENT_GET_CLASS (self)->ip4_start (self,
dhcp_anycast_addr,
last_ip4_address,
@@ -547,7 +544,6 @@ nm_dhcp_client_start_ip6 (NMDhcpClient *self,
gboolean enforce_duid,
const char *dhcp_anycast_addr,
const struct in6_addr *ll_addr,
- const char *hostname,
NMSettingIP6ConfigPrivacy privacy,
guint needed_prefixes,
GError **error)
@@ -573,9 +569,6 @@ nm_dhcp_client_start_ip6 (NMDhcpClient *self,
own_client_id ?: client_id,
FALSE);
- g_clear_pointer (&priv->hostname, g_free);
- priv->hostname = g_strdup (hostname);
-
if (priv->timeout == NM_DHCP_TIMEOUT_INFINITY)
_LOGI ("activation: beginning transaction (no timeout)");
else
@@ -855,6 +848,9 @@ get_property (GObject *object, guint prop_id,
case PROP_UUID:
g_value_set_string (value, priv->uuid);
break;
+ case PROP_HOSTNAME:
+ g_value_set_string (value, priv->hostname);
+ break;
case PROP_ROUTE_METRIC:
g_value_set_uint (value, priv->route_metric);
break;
@@ -917,6 +913,10 @@ set_property (GObject *object, guint prop_id,
/* construct-only */
priv->uuid = g_value_dup_string (value);
break;
+ case PROP_HOSTNAME:
+ /* construct-only */
+ priv->hostname = g_value_dup_string (value);
+ break;
case PROP_ROUTE_TABLE:
priv->route_table = g_value_get_uint (value);
break;
@@ -1025,6 +1025,12 @@ nm_dhcp_client_class_init (NMDhcpClientClass *client_class)
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY |
G_PARAM_STATIC_STRINGS);
+ obj_properties[PROP_HOSTNAME] =
+ g_param_spec_string (NM_DHCP_CLIENT_HOSTNAME, "", "",
+ NULL,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_STRINGS);
+
obj_properties[PROP_ROUTE_TABLE] =
g_param_spec_uint (NM_DHCP_CLIENT_ROUTE_TABLE, "", "",
0, G_MAXUINT32, RT_TABLE_MAIN,
diff --git a/src/dhcp/nm-dhcp-client.h b/src/dhcp/nm-dhcp-client.h
index 0d2aaaaad9..1db7eac6c0 100644
--- a/src/dhcp/nm-dhcp-client.h
+++ b/src/dhcp/nm-dhcp-client.h
@@ -41,6 +41,7 @@
#define NM_DHCP_CLIENT_IFINDEX "ifindex"
#define NM_DHCP_CLIENT_INTERFACE "iface"
#define NM_DHCP_CLIENT_MULTI_IDX "multi-idx"
+#define NM_DHCP_CLIENT_HOSTNAME "hostname"
#define NM_DHCP_CLIENT_ROUTE_METRIC "route-metric"
#define NM_DHCP_CLIENT_ROUTE_TABLE "route-table"
#define NM_DHCP_CLIENT_TIMEOUT "timeout"
@@ -143,7 +144,6 @@ gboolean nm_dhcp_client_get_use_fqdn (NMDhcpClient *self);
gboolean nm_dhcp_client_start_ip4 (NMDhcpClient *self,
GBytes *client_id,
const char *dhcp_anycast_addr,
- const char *hostname,
const char *last_ip4_address,
GError **error);
@@ -152,7 +152,6 @@ gboolean nm_dhcp_client_start_ip6 (NMDhcpClient *self,
gboolean enforce_duid,
const char *dhcp_anycast_addr,
const struct in6_addr *ll_addr,
- const char *hostname,
NMSettingIP6ConfigPrivacy privacy,
guint needed_prefixes,
GError **error);
diff --git a/src/dhcp/nm-dhcp-manager.c b/src/dhcp/nm-dhcp-manager.c
index 878336178e..a51c6e3847 100644
--- a/src/dhcp/nm-dhcp-manager.c
+++ b/src/dhcp/nm-dhcp-manager.c
@@ -222,6 +222,7 @@ client_start (NMDhcpManager *self,
NM_DHCP_CLIENT_IFINDEX, ifindex,
NM_DHCP_CLIENT_HWADDR, hwaddr,
NM_DHCP_CLIENT_UUID, uuid,
+ NM_DHCP_CLIENT_HOSTNAME, hostname,
NM_DHCP_CLIENT_ROUTE_TABLE, (guint) route_table,
NM_DHCP_CLIENT_ROUTE_METRIC, (guint) route_metric,
NM_DHCP_CLIENT_TIMEOUT, (guint) timeout,
@@ -264,7 +265,6 @@ client_start (NMDhcpManager *self,
success = nm_dhcp_client_start_ip4 (client,
dhcp_client_id,
dhcp_anycast_addr,
- hostname,
last_ip4_address,
error);
} else {
@@ -273,7 +273,6 @@ client_start (NMDhcpManager *self,
enforce_duid,
dhcp_anycast_addr,
ipv6_ll_addr,
- hostname,
privacy,
needed_prefixes,
error);