summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2014-04-03 13:13:17 -0500
committerDan Williams <dcbw@redhat.com>2014-07-17 17:19:36 -0500
commitf7a8b2801370b872774b1da4e43a1040bcf208a8 (patch)
treef54a2cb7deb156206a00b8a138f73859b8f487ba
parentbcd554724e796a482df5c54ebdafb97d6e81b10e (diff)
downloadNetworkManager-f7a8b2801370b872774b1da4e43a1040bcf208a8.tar.gz
dhcp: pass ifindex to DHCP clients
-rw-r--r--src/devices/nm-device.c2
-rw-r--r--src/dhcp-manager/nm-dhcp-client.c24
-rw-r--r--src/dhcp-manager/nm-dhcp-client.h3
-rw-r--r--src/dhcp-manager/nm-dhcp-manager.c8
-rw-r--r--src/dhcp-manager/nm-dhcp-manager.h2
5 files changed, 37 insertions, 2 deletions
diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c
index 6f659e53a1..4f6f1542b9 100644
--- a/src/devices/nm-device.c
+++ b/src/devices/nm-device.c
@@ -2790,6 +2790,7 @@ dhcp4_start (NMDevice *self,
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),
+ nm_device_get_ip_ifindex (self),
tmp,
nm_connection_get_uuid (connection),
nm_device_get_priority (self),
@@ -3267,6 +3268,7 @@ dhcp6_start (NMDevice *self,
priv->dhcp6_client = nm_dhcp_manager_start_ip6 (nm_dhcp_manager_get (),
nm_device_get_ip_iface (self),
+ nm_device_get_ip_ifindex (self),
tmp,
nm_connection_get_uuid (connection),
nm_device_get_priority (self),
diff --git a/src/dhcp-manager/nm-dhcp-client.c b/src/dhcp-manager/nm-dhcp-client.c
index 5c39fafa68..a6d1618915 100644
--- a/src/dhcp-manager/nm-dhcp-client.c
+++ b/src/dhcp-manager/nm-dhcp-client.c
@@ -36,6 +36,7 @@
typedef struct {
char * iface;
+ int ifindex;
GByteArray * hwaddr;
gboolean ipv6;
char * uuid;
@@ -70,6 +71,7 @@ static guint signals[LAST_SIGNAL] = { 0 };
enum {
PROP_0,
PROP_IFACE,
+ PROP_IFINDEX,
PROP_HWADDR,
PROP_IPV6,
PROP_UUID,
@@ -96,6 +98,14 @@ nm_dhcp_client_get_iface (NMDHCPClient *self)
return NM_DHCP_CLIENT_GET_PRIVATE (self)->iface;
}
+int
+nm_dhcp_client_get_ifindex (NMDHCPClient *self)
+{
+ g_return_val_if_fail (NM_IS_DHCP_CLIENT (self), -1);
+
+ return NM_DHCP_CLIENT_GET_PRIVATE (self)->ifindex;
+}
+
gboolean
nm_dhcp_client_get_ipv6 (NMDHCPClient *self)
{
@@ -1467,6 +1477,9 @@ get_property (GObject *object, guint prop_id,
case PROP_IFACE:
g_value_set_string (value, priv->iface);
break;
+ case PROP_IFINDEX:
+ g_value_set_int (value, priv->ifindex);
+ break;
case PROP_HWADDR:
g_value_set_boxed (value, priv->hwaddr);
break;
@@ -1499,6 +1512,11 @@ set_property (GObject *object, guint prop_id,
/* construct-only */
priv->iface = g_strdup (g_value_get_string (value));
break;
+ case PROP_IFINDEX:
+ /* construct-only */
+ priv->ifindex = g_value_get_int (value);
+ g_warn_if_fail (priv->ifindex > 0);
+ break;
case PROP_HWADDR:
/* construct only */
priv->hwaddr = g_value_dup_boxed (value);
@@ -1582,6 +1600,12 @@ nm_dhcp_client_class_init (NMDHCPClientClass *client_class)
G_PARAM_STATIC_STRINGS));
g_object_class_install_property
+ (object_class, PROP_IFINDEX,
+ g_param_spec_int (NM_DHCP_CLIENT_IFINDEX, "", "",
+ -1, G_MAXINT, -1,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+
+ g_object_class_install_property
(object_class, PROP_HWADDR,
g_param_spec_boxed (NM_DHCP_CLIENT_HWADDR, "", "",
G_TYPE_BYTE_ARRAY,
diff --git a/src/dhcp-manager/nm-dhcp-client.h b/src/dhcp-manager/nm-dhcp-client.h
index ad18926af9..ba7d656e78 100644
--- a/src/dhcp-manager/nm-dhcp-client.h
+++ b/src/dhcp-manager/nm-dhcp-client.h
@@ -35,6 +35,7 @@
#define NM_DHCP_CLIENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_DHCP_CLIENT, NMDHCPClientClass))
#define NM_DHCP_CLIENT_INTERFACE "iface"
+#define NM_DHCP_CLIENT_IFINDEX "ifindex"
#define NM_DHCP_CLIENT_HWADDR "hwaddr"
#define NM_DHCP_CLIENT_IPV6 "ipv6"
#define NM_DHCP_CLIENT_UUID "uuid"
@@ -120,6 +121,8 @@ GPid nm_dhcp_client_get_pid (NMDHCPClient *self);
const char *nm_dhcp_client_get_iface (NMDHCPClient *self);
+int nm_dhcp_client_get_ifindex (NMDHCPClient *self);
+
gboolean nm_dhcp_client_get_ipv6 (NMDHCPClient *self);
const char *nm_dhcp_client_get_uuid (NMDHCPClient *self);
diff --git a/src/dhcp-manager/nm-dhcp-manager.c b/src/dhcp-manager/nm-dhcp-manager.c
index 195d50b074..944345a092 100644
--- a/src/dhcp-manager/nm-dhcp-manager.c
+++ b/src/dhcp-manager/nm-dhcp-manager.c
@@ -382,6 +382,7 @@ add_client (NMDHCPManager *self, NMDHCPClient *client)
static NMDHCPClient *
client_start (NMDHCPManager *self,
const char *iface,
+ int ifindex,
const GByteArray *hwaddr,
const char *uuid,
guint priority,
@@ -416,6 +417,7 @@ client_start (NMDHCPManager *self,
/* And make a new one */
client = g_object_new (priv->client_type,
NM_DHCP_CLIENT_INTERFACE, iface,
+ NM_DHCP_CLIENT_IFINDEX, ifindex,
NM_DHCP_CLIENT_HWADDR, hwaddr,
NM_DHCP_CLIENT_IPV6, ipv6,
NM_DHCP_CLIENT_UUID, uuid,
@@ -452,6 +454,7 @@ get_send_hostname (NMDHCPManager *self, const char *setting_hostname)
NMDHCPClient *
nm_dhcp_manager_start_ip4 (NMDHCPManager *self,
const char *iface,
+ int ifindex,
const GByteArray *hwaddr,
const char *uuid,
guint priority,
@@ -472,7 +475,7 @@ nm_dhcp_manager_start_ip4 (NMDHCPManager *self,
if (send_hostname)
hostname = get_send_hostname (self, nm_setting_ip4_config_get_dhcp_hostname (s_ip4));
- return client_start (self, iface, hwaddr, uuid, priority, FALSE,
+ return client_start (self, iface, ifindex, hwaddr, uuid, priority, FALSE,
nm_setting_ip4_config_get_dhcp_client_id (s_ip4),
timeout, dhcp_anycast_addr, hostname, FALSE);
}
@@ -481,6 +484,7 @@ nm_dhcp_manager_start_ip4 (NMDHCPManager *self,
NMDHCPClient *
nm_dhcp_manager_start_ip6 (NMDHCPManager *self,
const char *iface,
+ int ifindex,
const GByteArray *hwaddr,
const char *uuid,
guint priority,
@@ -495,7 +499,7 @@ nm_dhcp_manager_start_ip6 (NMDHCPManager *self,
hostname = get_send_hostname (self, nm_setting_ip6_config_get_dhcp_hostname (s_ip6));
- return client_start (self, iface, hwaddr, uuid, priority, TRUE,
+ return client_start (self, iface, ifindex, hwaddr, uuid, priority, TRUE,
NULL, timeout, dhcp_anycast_addr, hostname, info_only);
}
diff --git a/src/dhcp-manager/nm-dhcp-manager.h b/src/dhcp-manager/nm-dhcp-manager.h
index efdd43788b..fd1287138e 100644
--- a/src/dhcp-manager/nm-dhcp-manager.h
+++ b/src/dhcp-manager/nm-dhcp-manager.h
@@ -66,6 +66,7 @@ void nm_dhcp_manager_set_default_hostname (NMDHCPManager *manager,
NMDHCPClient * nm_dhcp_manager_start_ip4 (NMDHCPManager *manager,
const char *iface,
+ int ifindex,
const GByteArray *hwaddr,
const char *uuid,
guint priority,
@@ -75,6 +76,7 @@ NMDHCPClient * nm_dhcp_manager_start_ip4 (NMDHCPManager *manager,
NMDHCPClient * nm_dhcp_manager_start_ip6 (NMDHCPManager *manager,
const char *iface,
+ int ifindex,
const GByteArray *hwaddr,
const char *uuid,
guint priority,