dhcp: pass ifindex to DHCP clients

This commit is contained in:
Dan Williams 2014-04-03 13:13:17 -05:00
parent 5de8173584
commit 37b6fc1c85
5 changed files with 37 additions and 2 deletions

View file

@ -2791,6 +2791,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),
@ -3268,6 +3269,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),

View file

@ -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);
@ -1581,6 +1599,12 @@ nm_dhcp_client_class_init (NMDHCPClientClass *client_class)
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY |
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, "", "",

View file

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

View file

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

View file

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