summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2014-06-11 10:53:58 +0200
committerThomas Haller <thaller@redhat.com>2014-06-11 11:09:41 +0200
commit59a0012e1fe1be244b95b9184bdf0111958109ad (patch)
treedc3c441ab91d80699583dc926f0ee27445b75794
parent0a4a079e5d6b9aa8c606c2a3444abf027e52ffbf (diff)
downloadNetworkManager-th/NMPlatformHwAddress.tar.gz
dhcp: refactor using NMPlatformHwAddressth/wip/NMPlatformHwAddressth/NMPlatformHwAddress
Signed-off-by: Thomas Haller <thaller@redhat.com>
-rw-r--r--src/devices/nm-device.c15
-rw-r--r--src/dhcp-manager/nm-dhcp-client.c12
-rw-r--r--src/dhcp-manager/nm-dhcp-manager.c15
-rw-r--r--src/dhcp-manager/nm-dhcp-manager.h5
4 files changed, 20 insertions, 27 deletions
diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c
index 5f67493e94..5630d3f14f 100644
--- a/src/devices/nm-device.c
+++ b/src/devices/nm-device.c
@@ -2756,7 +2756,6 @@ dhcp4_start (NMDevice *self,
{
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self);
NMSettingIP4Config *s_ip4;
- GByteArray *tmp;
s_ip4 = nm_connection_get_setting_ip4_config (connection);
@@ -2765,22 +2764,17 @@ dhcp4_start (NMDevice *self,
g_object_unref (priv->dhcp4_config);
priv->dhcp4_config = nm_dhcp4_config_new ();
- tmp = nm_platform_hw_address_to_byte_array (&priv->hw_addr);
-
/* Begin DHCP on the interface */
g_warn_if_fail (priv->dhcp4_client == NULL);
priv->dhcp4_client = nm_dhcp_manager_start_ip4 (nm_dhcp_manager_get (),
nm_device_get_ip_iface (self),
- tmp,
+ &priv->hw_addr,
nm_connection_get_uuid (connection),
nm_device_get_priority (self),
s_ip4,
priv->dhcp_timeout,
priv->dhcp_anycast_address);
- if (tmp)
- g_byte_array_free (tmp, TRUE);
-
if (!priv->dhcp4_client) {
*reason = NM_DEVICE_STATE_REASON_DHCP_START_FAILED;
return NM_ACT_STAGE_RETURN_FAILURE;
@@ -3221,7 +3215,6 @@ dhcp6_start (NMDevice *self,
NMSettingIP6Config *s_ip6;
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self);
NMActStageReturn ret = NM_ACT_STAGE_RETURN_FAILURE;
- GByteArray *tmp;
if (!connection) {
connection = nm_device_get_connection (self);
@@ -3241,19 +3234,15 @@ dhcp6_start (NMDevice *self,
priv->dhcp6_ip6_config = NULL;
}
- tmp = nm_platform_hw_address_to_byte_array (&priv->hw_addr);
-
priv->dhcp6_client = nm_dhcp_manager_start_ip6 (nm_dhcp_manager_get (),
nm_device_get_ip_iface (self),
- tmp,
+ &priv->hw_addr,
nm_connection_get_uuid (connection),
nm_device_get_priority (self),
nm_connection_get_setting_ip6_config (connection),
priv->dhcp_timeout,
priv->dhcp_anycast_address,
(dhcp_opt == NM_RDISC_DHCP_LEVEL_OTHERCONF) ? TRUE : FALSE);
- if (tmp)
- g_byte_array_free (tmp, TRUE);
if (priv->dhcp6_client) {
priv->dhcp6_state_sigid = g_signal_connect (priv->dhcp6_client,
diff --git a/src/dhcp-manager/nm-dhcp-client.c b/src/dhcp-manager/nm-dhcp-client.c
index 03c11c74d4..2ee5ce9f4e 100644
--- a/src/dhcp-manager/nm-dhcp-client.c
+++ b/src/dhcp-manager/nm-dhcp-client.c
@@ -36,7 +36,7 @@
typedef struct {
char * iface;
- GByteArray * hwaddr;
+ NMPlatformHwAddress hwaddr;
gboolean ipv6;
char * uuid;
guint priority;
@@ -1504,7 +1504,7 @@ get_property (GObject *object, guint prop_id,
g_value_set_string (value, priv->iface);
break;
case PROP_HWADDR:
- g_value_set_boxed (value, priv->hwaddr);
+ g_value_take_boxed (value, nm_platform_hw_address_to_byte_array (&priv->hwaddr));
break;
case PROP_IPV6:
g_value_set_boolean (value, priv->ipv6);
@@ -1537,7 +1537,8 @@ set_property (GObject *object, guint prop_id,
break;
case PROP_HWADDR:
/* construct only */
- priv->hwaddr = g_value_dup_boxed (value);
+ nm_platform_hw_address_set_byte_array (&priv->hwaddr,
+ g_value_get_boxed (value));
break;
case PROP_IPV6:
/* construct-only */
@@ -1582,11 +1583,6 @@ dispose (GObject *object)
}
g_clear_pointer (&priv->iface, g_free);
- if (priv->hwaddr) {
- g_byte_array_free (priv->hwaddr, TRUE);
- priv->hwaddr = NULL;
- }
-
if (priv->duid) {
g_byte_array_free (priv->duid, TRUE);
priv->duid = NULL;
diff --git a/src/dhcp-manager/nm-dhcp-manager.c b/src/dhcp-manager/nm-dhcp-manager.c
index ab6966cbb6..32bae412c0 100644
--- a/src/dhcp-manager/nm-dhcp-manager.c
+++ b/src/dhcp-manager/nm-dhcp-manager.c
@@ -382,7 +382,7 @@ add_client (NMDHCPManager *self, NMDHCPClient *client)
static NMDHCPClient *
client_start (NMDHCPManager *self,
const char *iface,
- const GByteArray *hwaddr,
+ const NMPlatformHwAddress *hwaddr,
const char *uuid,
guint priority,
gboolean ipv6,
@@ -395,6 +395,7 @@ client_start (NMDHCPManager *self,
NMDHCPManagerPrivate *priv;
NMDHCPClient *client;
gboolean success = FALSE;
+ GByteArray *hwaddr_tmp = NULL;
g_return_val_if_fail (self, NULL);
g_return_val_if_fail (NM_IS_DHCP_MANAGER (self), NULL);
@@ -413,15 +414,21 @@ client_start (NMDHCPManager *self,
remove_client (self, client);
}
+ hwaddr_tmp = hwaddr ? nm_platform_hw_address_to_byte_array (hwaddr) : NULL;
+
/* And make a new one */
client = g_object_new (priv->client_type,
NM_DHCP_CLIENT_INTERFACE, iface,
- NM_DHCP_CLIENT_HWADDR, hwaddr,
+ NM_DHCP_CLIENT_HWADDR, hwaddr_tmp,
NM_DHCP_CLIENT_IPV6, ipv6,
NM_DHCP_CLIENT_UUID, uuid,
NM_DHCP_CLIENT_PRIORITY, priority,
NM_DHCP_CLIENT_TIMEOUT, timeout ? timeout : DHCP_TIMEOUT,
NULL);
+
+ if (hwaddr_tmp)
+ g_byte_array_free (hwaddr_tmp, TRUE);
+
g_return_val_if_fail (client != NULL, NULL);
add_client (self, client);
@@ -452,7 +459,7 @@ get_send_hostname (NMDHCPManager *self, const char *setting_hostname)
NMDHCPClient *
nm_dhcp_manager_start_ip4 (NMDHCPManager *self,
const char *iface,
- const GByteArray *hwaddr,
+ const NMPlatformHwAddress *hwaddr,
const char *uuid,
guint priority,
NMSettingIP4Config *s_ip4,
@@ -481,7 +488,7 @@ nm_dhcp_manager_start_ip4 (NMDHCPManager *self,
NMDHCPClient *
nm_dhcp_manager_start_ip6 (NMDHCPManager *self,
const char *iface,
- const GByteArray *hwaddr,
+ const NMPlatformHwAddress *hwaddr,
const char *uuid,
guint priority,
NMSettingIP6Config *s_ip6,
diff --git a/src/dhcp-manager/nm-dhcp-manager.h b/src/dhcp-manager/nm-dhcp-manager.h
index efdd43788b..5141b72391 100644
--- a/src/dhcp-manager/nm-dhcp-manager.h
+++ b/src/dhcp-manager/nm-dhcp-manager.h
@@ -31,6 +31,7 @@
#include "nm-dhcp-client.h"
#include "nm-ip4-config.h"
#include "nm-dhcp4-config.h"
+#include "nm-platform.h"
typedef enum {
NM_DHCP_MANAGER_ERROR_BAD_CLIENT = 0, /*< nick=BadClient >*/
@@ -66,7 +67,7 @@ void nm_dhcp_manager_set_default_hostname (NMDHCPManager *manager,
NMDHCPClient * nm_dhcp_manager_start_ip4 (NMDHCPManager *manager,
const char *iface,
- const GByteArray *hwaddr,
+ const NMPlatformHwAddress *hwaddr,
const char *uuid,
guint priority,
NMSettingIP4Config *s_ip4,
@@ -75,7 +76,7 @@ NMDHCPClient * nm_dhcp_manager_start_ip4 (NMDHCPManager *manager,
NMDHCPClient * nm_dhcp_manager_start_ip6 (NMDHCPManager *manager,
const char *iface,
- const GByteArray *hwaddr,
+ const NMPlatformHwAddress *hwaddr,
const char *uuid,
guint priority,
NMSettingIP6Config *s_ip6,