Пример #1
0
void
nm_ip4_config_add_route (NMIP4Config *config, NMIP4Route *route)
{
	NMIP4ConfigPrivate *priv;
	GSList *iter;

	g_return_if_fail (NM_IS_IP4_CONFIG (config));
	g_return_if_fail (route != NULL);

	priv = NM_IP4_CONFIG_GET_PRIVATE (config);
	for (iter = priv->routes; iter; iter = g_slist_next (iter)) {
		if (nm_ip4_route_compare ((NMIP4Route *) iter->data, route))
			return;
	}

	priv->routes = g_slist_append (priv->routes, nm_ip4_route_dup (route));
}
/**
 * nm_setting_ip4_config_add_route:
 * @setting: the #NMSettingIP4Config
 * @route: the route to add
 *
 * Adds a new IPv4 route and associated information to the setting.  The
 * given route is duplicated internally and is not changed by this function.
 *
 * Returns: %TRUE if the route was added; %FALSE if the route was already known.
 **/
gboolean
nm_setting_ip4_config_add_route (NMSettingIP4Config *setting,
                                 NMIP4Route *route)
{
	NMSettingIP4ConfigPrivate *priv;
	NMIP4Route *copy;
	GSList *iter;

	g_return_val_if_fail (NM_IS_SETTING_IP4_CONFIG (setting), FALSE);
	g_return_val_if_fail (route != NULL, FALSE);

	priv = NM_SETTING_IP4_CONFIG_GET_PRIVATE (setting);
	for (iter = priv->routes; iter; iter = g_slist_next (iter)) {
		if (nm_ip4_route_compare ((NMIP4Route *) iter->data, route))
			return FALSE;
	}

	copy = nm_ip4_route_dup (route);
	g_return_val_if_fail (copy != NULL, FALSE);

	priv->routes = g_slist_append (priv->routes, copy);
	return TRUE;
}
Пример #3
0
static gboolean
route_slist_compare (GSList *a, GSList *b)
{
    GSList *iter_a, *iter_b;
    gboolean found = FALSE;

    for (iter_a = a; iter_a; iter_a = g_slist_next (iter_a)) {
        NMIP4Route *route_a = (NMIP4Route *) iter_a->data;

        for (iter_b = b, found = FALSE; iter_b; iter_b = g_slist_next (iter_b)) {
            NMIP4Route *route_b = (NMIP4Route *) iter_b->data;

            if (nm_ip4_route_compare (route_a, route_b)) {
                found = TRUE;
                break;
            }
        }

        if (!found)
            return FALSE;
    }
    return TRUE;
}