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.
This commit is contained in:
Thomas Haller
2018-11-14 07:44:07 +01:00
parent e9630e7d57
commit 787f4b57cd
3 changed files with 16 additions and 12 deletions

View File

@@ -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,

View File

@@ -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);

View File

@@ -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);