core: drop redundant "gateway" variable for NMIPConfig

The "gateway" variable was redundant to best_default_route. It was
somewhat convenient to have, because the best_default_route pointer
might change, but the next hop might still be the same. So it was easy
to track whether it changes.

But it's also redundant information. By relying on best_default_route
alone we have all the information we need.
This commit is contained in:
Thomas Haller 2021-10-30 11:56:18 +02:00 committed by Beniamino Galvani
parent 7faeda8351
commit 682d2c842a
2 changed files with 18 additions and 21 deletions

View file

@ -100,14 +100,17 @@ get_property_ip(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec
g_value_set_variant(value, priv->v_address_data);
break;
case PROP_IP_GATEWAY:
if (priv->v_gateway.addr) {
if (priv->v_gateway.best_default_route) {
const NMIPAddr *gateway;
gateway = nm_platform_ip_route_get_gateway(
addr_family,
NMP_OBJECT_CAST_IP_ROUTE(priv->v_gateway.best_default_route));
g_value_set_variant(
value,
g_variant_new_string(
nm_utils_inet_ntop(addr_family, priv->v_gateway.addr, sbuf_addr)));
} else {
g_variant_new_string(nm_utils_inet_ntop(addr_family, gateway, sbuf_addr)));
} else
g_value_set_variant(value, nm_g_variant_singleton_s_empty());
}
break;
case PROP_IP_ROUTE_DATA:
g_value_set_variant(value, priv->v_route_data);
@ -212,7 +215,6 @@ finalize(GObject *object)
nm_g_variant_unref(priv->v_route_data);
nm_g_variant_unref(priv->v_routes);
g_free(priv->v_gateway.addr);
nmp_object_unref(priv->v_gateway.best_default_route);
nm_l3_config_data_unref(priv->l3cd);
@ -763,21 +765,17 @@ _handle_platform_change(NMIPConfig *self, guint32 obj_type_flags, gboolean is_in
}
}
if (nmp_object_ref_set(&priv->v_gateway.best_default_route, best_default_route)) {
gconstpointer gateway_next_hop;
gateway_next_hop = priv->v_gateway.best_default_route
? nm_platform_ip_route_get_gateway(
addr_family,
NMP_OBJECT_CAST_IP_ROUTE(priv->v_gateway.best_default_route))
: NULL;
if (!nm_ip_addr_equal(addr_family, priv->v_gateway.addr, gateway_next_hop)) {
g_free(priv->v_gateway.addr);
priv->v_gateway.addr =
g_memdup(gateway_next_hop, nm_utils_addr_family_to_size(addr_family));
if (priv->v_gateway.best_default_route != best_default_route) {
if (!nm_ip_addr_equal(
addr_family,
nm_platform_ip_route_get_gateway(
addr_family,
NMP_OBJECT_CAST_IP_ROUTE(priv->v_gateway.best_default_route)),
nm_platform_ip_route_get_gateway(addr_family,
NMP_OBJECT_CAST_IP_ROUTE(best_default_route))))
best_default_route_changed = TRUE;
}
nmp_object_ref_set(&priv->v_gateway.best_default_route, best_default_route);
}
}

View file

@ -31,7 +31,6 @@ struct _NMIPConfigPrivate {
GVariant * v_routes;
struct {
const NMPObject *best_default_route;
NMIPAddr * addr;
} v_gateway;
gulong l3cfg_notify_id;
};