mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-01-07 00:50:16 +01:00
dhcp: pass ifindex to DHCP clients
This commit is contained in:
parent
5de8173584
commit
37b6fc1c85
5 changed files with 37 additions and 2 deletions
|
|
@ -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),
|
||||
|
|
|
|||
|
|
@ -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, "", "",
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue