vpn: simplify routes parsing code
Split the IPv4 and IPv6 cases to make the following commit simpler.
This commit is contained in:
@@ -2099,20 +2099,12 @@ _dbus_signal_ip_config_cb(NMVpnConnection *self, int addr_family, GVariant *dict
|
|||||||
NMP_OBJECT_TYPE_IP_ROUTE(IS_IPv4))
|
NMP_OBJECT_TYPE_IP_ROUTE(IS_IPv4))
|
||||||
nm_l3_config_data_add_route(l3cd, addr_family, route, NULL);
|
nm_l3_config_data_add_route(l3cd, addr_family, route, NULL);
|
||||||
}
|
}
|
||||||
} else if (IS_IPv4 ? g_variant_lookup(dict, NM_VPN_PLUGIN_IP4_CONFIG_ROUTES, "aau", &var_iter)
|
} else if (IS_IPv4) {
|
||||||
: g_variant_lookup(dict,
|
if (g_variant_lookup(dict, NM_VPN_PLUGIN_IP4_CONFIG_ROUTES, "aau", &var_iter)) {
|
||||||
NM_VPN_PLUGIN_IP6_CONFIG_ROUTES,
|
|
||||||
"a(ayuayu)",
|
|
||||||
&var_iter)) {
|
|
||||||
_nm_unused nm_auto_free_variant_iter GVariantIter *var_iter_ref_owner = var_iter;
|
_nm_unused nm_auto_free_variant_iter GVariantIter *var_iter_ref_owner = var_iter;
|
||||||
NMPlatformIPXRoute route = {};
|
NMPlatformIPXRoute route = {};
|
||||||
guint32 plen;
|
guint32 plen;
|
||||||
GVariant *next_hop;
|
|
||||||
GVariant *dest;
|
|
||||||
guint32 prefix;
|
|
||||||
guint32 metric;
|
|
||||||
|
|
||||||
if (IS_IPv4) {
|
|
||||||
while (g_variant_iter_next(var_iter, "@au", &v)) {
|
while (g_variant_iter_next(var_iter, "@au", &v)) {
|
||||||
_nm_unused gs_unref_variant GVariant *v_ref_owner = v;
|
_nm_unused gs_unref_variant GVariant *v_ref_owner = v;
|
||||||
|
|
||||||
@@ -2151,7 +2143,19 @@ _dbus_signal_ip_config_cb(NMVpnConnection *self, int addr_family, GVariant *dict
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
|
_nm_unused nm_auto_free_variant_iter GVariantIter *var_iter_ref_owner = NULL;
|
||||||
|
NMPlatformIPXRoute route = {};
|
||||||
|
GVariant *next_hop;
|
||||||
|
GVariant *dest;
|
||||||
|
guint32 prefix;
|
||||||
|
guint32 metric;
|
||||||
|
|
||||||
|
/* IPv6 and no "preserve-routes" */
|
||||||
|
|
||||||
|
if (g_variant_lookup(dict, NM_VPN_PLUGIN_IP6_CONFIG_ROUTES, "a(ayuayu)", &var_iter)) {
|
||||||
|
var_iter_ref_owner = var_iter;
|
||||||
while (
|
while (
|
||||||
g_variant_iter_next(var_iter, "(@ayu@ayu)", &dest, &prefix, &next_hop, &metric)) {
|
g_variant_iter_next(var_iter, "(@ayu@ayu)", &dest, &prefix, &next_hop, &metric)) {
|
||||||
_nm_unused gs_unref_variant GVariant *next_hop_ref_owner = next_hop;
|
_nm_unused gs_unref_variant GVariant *next_hop_ref_owner = next_hop;
|
||||||
|
Reference in New Issue
Block a user