summaryrefslogtreecommitdiff
path: root/src/dhcp
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2018-02-14 14:58:52 +0100
committerThomas Haller <thaller@redhat.com>2018-02-15 16:08:00 +0100
commit8ff962d9e481b8bd3f8b29e3e217fc6c19bd1f31 (patch)
tree47e29af8412e7d970021430489e91379fd2c5b83 /src/dhcp
parentbadace72ddb16ee2c4a21c6248e8c80a9e30c82a (diff)
dhcp: cache info-only parameter in NMDhcpClient
Optimally, NMDhcpClient would be stateless and all paramters would be passed on as argument. Clearly that is not feasable, because there are so many paramters, and in many cases they need to be cached for the lifetime of the client instance. Instead of passing info_only paramter to ip6_start() and cache it both in NMDhcpClient and NMDhcpSystemd, keep it in NMDhcpClient at one place. In the next commit, we will initialize info-only only once during the constructor, so it is immutable and somewhat stateless.
Diffstat (limited to 'src/dhcp')
-rw-r--r--src/dhcp/nm-dhcp-client.c10
-rw-r--r--src/dhcp/nm-dhcp-client.h3
-rw-r--r--src/dhcp/nm-dhcp-dhclient.c7
-rw-r--r--src/dhcp/nm-dhcp-dhcpcanon.c1
-rw-r--r--src/dhcp/nm-dhcp-dhcpcd.c1
-rw-r--r--src/dhcp/nm-dhcp-systemd.c9
6 files changed, 18 insertions, 13 deletions
diff --git a/src/dhcp/nm-dhcp-client.c b/src/dhcp/nm-dhcp-client.c
index 8fbb3c64f..317ddb5e6 100644
--- a/src/dhcp/nm-dhcp-client.c
+++ b/src/dhcp/nm-dhcp-client.c
@@ -261,6 +261,14 @@ nm_dhcp_client_get_hostname (NMDhcpClient *self)
}
gboolean
+nm_dhcp_client_get_info_only (NMDhcpClient *self)
+{
+ g_return_val_if_fail (NM_IS_DHCP_CLIENT (self), FALSE);
+
+ return NM_DHCP_CLIENT_GET_PRIVATE (self)->info_only;
+}
+
+gboolean
nm_dhcp_client_get_use_fqdn (NMDhcpClient *self)
{
g_return_val_if_fail (NM_IS_DHCP_CLIENT (self), FALSE);
@@ -359,7 +367,6 @@ stop (NMDhcpClient *self, gboolean release, const GByteArray *duid)
nm_dhcp_client_stop_pid (priv->pid, priv->iface);
}
priv->pid = -1;
- priv->info_only = FALSE;
}
void
@@ -626,7 +633,6 @@ nm_dhcp_client_start_ip6 (NMDhcpClient *self,
return NM_DHCP_CLIENT_GET_CLASS (self)->ip6_start (self,
dhcp_anycast_addr,
ll_addr,
- info_only,
privacy,
priv->duid,
needed_prefixes);
diff --git a/src/dhcp/nm-dhcp-client.h b/src/dhcp/nm-dhcp-client.h
index 3583281dc..6616f1406 100644
--- a/src/dhcp/nm-dhcp-client.h
+++ b/src/dhcp/nm-dhcp-client.h
@@ -79,7 +79,6 @@ typedef struct {
gboolean (*ip6_start) (NMDhcpClient *self,
const char *anycast_addr,
const struct in6_addr *ll_addr,
- gboolean info_only,
NMSettingIP6ConfigPrivacy privacy,
const GByteArray *duid,
guint needed_prefixes);
@@ -134,6 +133,8 @@ GBytes *nm_dhcp_client_get_client_id (NMDhcpClient *self);
const char *nm_dhcp_client_get_hostname (NMDhcpClient *self);
+gboolean nm_dhcp_client_get_info_only (NMDhcpClient *self);
+
gboolean nm_dhcp_client_get_use_fqdn (NMDhcpClient *self);
gboolean nm_dhcp_client_start_ip4 (NMDhcpClient *self,
diff --git a/src/dhcp/nm-dhcp-dhclient.c b/src/dhcp/nm-dhcp-dhclient.c
index 03ce4c3c7..e93ab9a09 100644
--- a/src/dhcp/nm-dhcp-dhclient.c
+++ b/src/dhcp/nm-dhcp-dhclient.c
@@ -533,7 +533,6 @@ static gboolean
ip6_start (NMDhcpClient *client,
const char *dhcp_anycast_addr,
const struct in6_addr *ll_addr,
- gboolean info_only,
NMSettingIP6ConfigPrivacy privacy,
const GByteArray *duid,
guint needed_prefixes)
@@ -555,7 +554,11 @@ ip6_start (NMDhcpClient *client,
return FALSE;
}
- return dhclient_start (client, info_only ? "-S" : "-N", duid, FALSE, NULL, needed_prefixes);
+ return dhclient_start (client,
+ nm_dhcp_client_get_info_only (NM_DHCP_CLIENT (self))
+ ? "-S"
+ : "-N",
+ duid, FALSE, NULL, needed_prefixes);
}
static void
diff --git a/src/dhcp/nm-dhcp-dhcpcanon.c b/src/dhcp/nm-dhcp-dhcpcanon.c
index a03f9d05b..5c8f0d7d2 100644
--- a/src/dhcp/nm-dhcp-dhcpcanon.c
+++ b/src/dhcp/nm-dhcp-dhcpcanon.c
@@ -179,7 +179,6 @@ static gboolean
ip6_start (NMDhcpClient *client,
const char *dhcp_anycast_addr,
const struct in6_addr *ll_addr,
- gboolean info_only,
NMSettingIP6ConfigPrivacy privacy,
const GByteArray *duid,
guint needed_prefixes)
diff --git a/src/dhcp/nm-dhcp-dhcpcd.c b/src/dhcp/nm-dhcp-dhcpcd.c
index ff8efb20a..1eb4398aa 100644
--- a/src/dhcp/nm-dhcp-dhcpcd.c
+++ b/src/dhcp/nm-dhcp-dhcpcd.c
@@ -177,7 +177,6 @@ static gboolean
ip6_start (NMDhcpClient *client,
const char *dhcp_anycast_addr,
const struct in6_addr *ll_addr,
- gboolean info_only,
NMSettingIP6ConfigPrivacy privacy,
const GByteArray *duid,
guint needed_prefixes)
diff --git a/src/dhcp/nm-dhcp-systemd.c b/src/dhcp/nm-dhcp-systemd.c
index 213cd41d4..a7222e486 100644
--- a/src/dhcp/nm-dhcp-systemd.c
+++ b/src/dhcp/nm-dhcp-systemd.c
@@ -60,8 +60,7 @@ typedef struct {
guint request_count;
- gboolean privacy;
- gboolean info_only;
+ bool privacy:1;
} NMDhcpSystemdPrivate;
struct _NMDhcpSystemd {
@@ -854,7 +853,7 @@ bound6_handle (NMDhcpSystemd *self)
lease,
options,
TRUE,
- priv->info_only,
+ nm_dhcp_client_get_info_only (NM_DHCP_CLIENT (self)),
&error);
if (ip6_config) {
@@ -900,7 +899,6 @@ static gboolean
ip6_start (NMDhcpClient *client,
const char *dhcp_anycast_addr,
const struct in6_addr *ll_addr,
- gboolean info_only,
NMSettingIP6ConfigPrivacy privacy,
const GByteArray *duid,
guint needed_prefixes)
@@ -918,7 +916,6 @@ ip6_start (NMDhcpClient *client,
g_free (priv->lease_file);
priv->lease_file = get_leasefile_path (AF_INET6, iface, nm_dhcp_client_get_uuid (client));
- priv->info_only = info_only;
r = sd_dhcp6_client_new (&priv->client6);
if (r < 0) {
@@ -933,7 +930,7 @@ ip6_start (NMDhcpClient *client,
_LOGT ("dhcp-client6: set %p", priv->client6);
- if (info_only)
+ if (nm_dhcp_client_get_info_only (client))
sd_dhcp6_client_set_information_request (priv->client6, 1);
/* NM stores the entire DUID which includes the uint16 "type", while systemd