summaryrefslogtreecommitdiff
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
parentbadace72ddb16ee2c4a21c6248e8c80a9e30c82a (diff)
downloadNetworkManager-8ff962d9e481b8bd3f8b29e3e217fc6c19bd1f31.tar.gz
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.
-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 8fbb3c64f9..317ddb5e6f 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 3583281dc3..6616f1406f 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 03ce4c3c73..e93ab9a099 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 a03f9d05b5..5c8f0d7d26 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 ff8efb20af..1eb4398aa9 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 213cd41d4d..a7222e4863 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