dhcp: pass device specific route metric to nm_dhcp_systemd_get_lease_ip_configs()
Signed-off-by: Thomas Haller <thaller@redhat.com>
This commit is contained in:

committed by
Dan Winship

parent
9013fd42d6
commit
13d9b28323
@@ -6281,7 +6281,8 @@ find_ip4_lease_config (NMDevice *self,
|
|||||||
leases = nm_dhcp_manager_get_lease_ip_configs (nm_dhcp_manager_get (),
|
leases = nm_dhcp_manager_get_lease_ip_configs (nm_dhcp_manager_get (),
|
||||||
ip_iface,
|
ip_iface,
|
||||||
nm_connection_get_uuid (connection),
|
nm_connection_get_uuid (connection),
|
||||||
FALSE);
|
FALSE,
|
||||||
|
nm_device_get_ip4_route_metric (self));
|
||||||
for (liter = leases; liter && !found; liter = liter->next) {
|
for (liter = leases; liter && !found; liter = liter->next) {
|
||||||
NMIP4Config *lease_config = liter->data;
|
NMIP4Config *lease_config = liter->data;
|
||||||
const NMPlatformIP4Address *address = nm_ip4_config_get_address (lease_config, 0);
|
const NMPlatformIP4Address *address = nm_ip4_config_get_address (lease_config, 0);
|
||||||
|
@@ -101,7 +101,8 @@ typedef const char *(*NMDhcpClientGetPathFunc) (void);
|
|||||||
|
|
||||||
typedef GSList * (*NMDhcpClientGetLeaseConfigsFunc) (const char *iface,
|
typedef GSList * (*NMDhcpClientGetLeaseConfigsFunc) (const char *iface,
|
||||||
const char *uuid,
|
const char *uuid,
|
||||||
gboolean ipv6);
|
gboolean ipv6,
|
||||||
|
guint32 default_route_metric);
|
||||||
|
|
||||||
void _nm_dhcp_client_register (GType gtype,
|
void _nm_dhcp_client_register (GType gtype,
|
||||||
const char *name,
|
const char *name,
|
||||||
|
@@ -127,7 +127,8 @@ get_dhclient_leasefile (const char *iface,
|
|||||||
static GSList *
|
static GSList *
|
||||||
nm_dhcp_dhclient_get_lease_ip_configs (const char *iface,
|
nm_dhcp_dhclient_get_lease_ip_configs (const char *iface,
|
||||||
const char *uuid,
|
const char *uuid,
|
||||||
gboolean ipv6)
|
gboolean ipv6,
|
||||||
|
guint32 default_route_metric)
|
||||||
{
|
{
|
||||||
char *contents = NULL;
|
char *contents = NULL;
|
||||||
char *leasefile;
|
char *leasefile;
|
||||||
|
@@ -354,7 +354,8 @@ GSList *
|
|||||||
nm_dhcp_manager_get_lease_ip_configs (NMDhcpManager *self,
|
nm_dhcp_manager_get_lease_ip_configs (NMDhcpManager *self,
|
||||||
const char *iface,
|
const char *iface,
|
||||||
const char *uuid,
|
const char *uuid,
|
||||||
gboolean ipv6)
|
gboolean ipv6,
|
||||||
|
guint32 default_route_metric)
|
||||||
{
|
{
|
||||||
ClientDesc *desc;
|
ClientDesc *desc;
|
||||||
|
|
||||||
@@ -364,7 +365,7 @@ nm_dhcp_manager_get_lease_ip_configs (NMDhcpManager *self,
|
|||||||
|
|
||||||
desc = find_client_desc (NULL, NM_DHCP_MANAGER_GET_PRIVATE (self)->client_type);
|
desc = find_client_desc (NULL, NM_DHCP_MANAGER_GET_PRIVATE (self)->client_type);
|
||||||
if (desc && desc->get_lease_configs_func)
|
if (desc && desc->get_lease_configs_func)
|
||||||
return desc->get_lease_configs_func (iface, uuid, ipv6);
|
return desc->get_lease_configs_func (iface, uuid, ipv6, default_route_metric);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -80,7 +80,8 @@ NMDhcpClient * nm_dhcp_manager_start_ip6 (NMDhcpManager *manager,
|
|||||||
GSList * nm_dhcp_manager_get_lease_ip_configs (NMDhcpManager *self,
|
GSList * nm_dhcp_manager_get_lease_ip_configs (NMDhcpManager *self,
|
||||||
const char *iface,
|
const char *iface,
|
||||||
const char *uuid,
|
const char *uuid,
|
||||||
gboolean ipv6);
|
gboolean ipv6,
|
||||||
|
guint32 default_route_metric);
|
||||||
|
|
||||||
/* For testing only */
|
/* For testing only */
|
||||||
extern const char* nm_dhcp_helper_path;
|
extern const char* nm_dhcp_helper_path;
|
||||||
|
@@ -372,7 +372,8 @@ get_leasefile_path (const char *iface, const char *uuid, gboolean ipv6)
|
|||||||
static GSList *
|
static GSList *
|
||||||
nm_dhcp_systemd_get_lease_ip_configs (const char *iface,
|
nm_dhcp_systemd_get_lease_ip_configs (const char *iface,
|
||||||
const char *uuid,
|
const char *uuid,
|
||||||
gboolean ipv6)
|
gboolean ipv6,
|
||||||
|
guint32 default_route_metric)
|
||||||
{
|
{
|
||||||
GSList *leases = NULL;
|
GSList *leases = NULL;
|
||||||
gs_free char *path = NULL;
|
gs_free char *path = NULL;
|
||||||
@@ -386,7 +387,7 @@ nm_dhcp_systemd_get_lease_ip_configs (const char *iface,
|
|||||||
path = get_leasefile_path (iface, uuid, FALSE);
|
path = get_leasefile_path (iface, uuid, FALSE);
|
||||||
r = sd_dhcp_lease_load (&lease, path);
|
r = sd_dhcp_lease_load (&lease, path);
|
||||||
if (r == 0 && lease) {
|
if (r == 0 && lease) {
|
||||||
ip4_config = lease_to_ip4_config (lease, NULL, 0, FALSE, NULL);
|
ip4_config = lease_to_ip4_config (lease, NULL, default_route_metric, FALSE, NULL);
|
||||||
if (ip4_config)
|
if (ip4_config)
|
||||||
leases = g_slist_append (leases, ip4_config);
|
leases = g_slist_append (leases, ip4_config);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user