summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2016-08-19 15:18:26 +0200
committerThomas Haller <thaller@redhat.com>2016-08-23 10:51:18 +0200
commit2da35ddfe80346d4aee2510e830a59f62fc9434f (patch)
treeaed2609ae7abe81116f3e253a0861bbdd5de9bf9
parent9d6f613df41081e10ca4a5813f1c2b4d57406c1a (diff)
downloadNetworkManager-2da35ddfe80346d4aee2510e830a59f62fc9434f.tar.gz
vpn: fix nm_vpn_connection_ip6_config_get() for VPNs without own interface
We need an ifindex for the NMIP4Config/NMIP6Config instance. For interface-less VPN types, we need to lookup the parent device, as already done for IPv4. Fix IPv6 case too. https://bugzilla.redhat.com/show_bug.cgi?id=1368354
-rw-r--r--src/vpn-manager/nm-vpn-connection.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/vpn-manager/nm-vpn-connection.c b/src/vpn-manager/nm-vpn-connection.c
index 3c9b057106..f9c4f01e68 100644
--- a/src/vpn-manager/nm-vpn-connection.c
+++ b/src/vpn-manager/nm-vpn-connection.c
@@ -1373,6 +1373,7 @@ nm_vpn_connection_ip4_config_get (NMVpnConnection *self, GVariant *dict)
GVariant *v;
gboolean b;
guint i, n;
+ int ip_ifindex;
g_return_if_fail (dict && g_variant_is_of_type (dict, G_VARIANT_TYPE_VARDICT));
@@ -1400,7 +1401,11 @@ nm_vpn_connection_ip4_config_get (NMVpnConnection *self, GVariant *dict)
priv->has_ip6 = FALSE;
}
- config = nm_ip4_config_new (nm_vpn_connection_get_ip_ifindex (self, TRUE));
+ ip_ifindex = nm_vpn_connection_get_ip_ifindex (self, TRUE);
+ if (ip_ifindex <= 0)
+ g_return_if_reached ();
+
+ config = nm_ip4_config_new (ip_ifindex);
nm_ip4_config_set_dns_priority (config, NM_DNS_PRIORITY_DEFAULT_VPN);
memset (&address, 0, sizeof (address));
@@ -1535,6 +1540,7 @@ nm_vpn_connection_ip6_config_get (NMVpnConnection *self, GVariant *dict)
GVariant *v;
gboolean b;
guint i, n;
+ int ip_ifindex;
g_return_if_fail (dict && g_variant_is_of_type (dict, G_VARIANT_TYPE_VARDICT));
@@ -1549,7 +1555,11 @@ nm_vpn_connection_ip6_config_get (NMVpnConnection *self, GVariant *dict)
return;
}
- config = nm_ip6_config_new (priv->ip_ifindex);
+ ip_ifindex = nm_vpn_connection_get_ip_ifindex (self, TRUE);
+ if (ip_ifindex <= 0)
+ g_return_if_reached ();
+
+ config = nm_ip6_config_new (ip_ifindex);
nm_ip6_config_set_dns_priority (config, NM_DNS_PRIORITY_DEFAULT_VPN);
memset (&address, 0, sizeof (address));