static gpointer _nm_ip6_route_object_array_copy (GPtrArray *src) { GPtrArray *dest; int i; dest = g_ptr_array_sized_new (src->len); for (i = 0; i < src->len; i++) g_ptr_array_add (dest, nm_ip6_route_dup (g_ptr_array_index (src, i))); return dest; }
void nm_ip6_config_replace_route (NMIP6Config *config, guint i, NMIP6Route *new_route) { NMIP6ConfigPrivate *priv; GSList *old; g_return_if_fail (NM_IS_IP6_CONFIG (config)); priv = NM_IP6_CONFIG_GET_PRIVATE (config); old = g_slist_nth (priv->routes, i); g_return_if_fail (old != NULL); nm_ip6_route_unref ((NMIP6Route *) old->data); old->data = nm_ip6_route_dup (new_route); }
void nm_ip6_config_add_route (NMIP6Config *config, NMIP6Route *route) { NMIP6ConfigPrivate *priv; GSList *iter; g_return_if_fail (NM_IS_IP6_CONFIG (config)); g_return_if_fail (route != NULL); priv = NM_IP6_CONFIG_GET_PRIVATE (config); for (iter = priv->routes; iter; iter = g_slist_next (iter)) { if (nm_ip6_route_compare ((NMIP6Route *) iter->data, route)) return; } priv->routes = g_slist_append (priv->routes, nm_ip6_route_dup (route)); }
gboolean nm_setting_ip6_config_add_route (NMSettingIP6Config *setting, NMIP6Route *route) { NMSettingIP6ConfigPrivate *priv; NMIP6Route *copy; GSList *iter; g_return_val_if_fail (NM_IS_SETTING_IP6_CONFIG (setting), FALSE); g_return_val_if_fail (route != NULL, FALSE); priv = NM_SETTING_IP6_CONFIG_GET_PRIVATE (setting); for (iter = priv->routes; iter; iter = g_slist_next (iter)) { if (nm_ip6_route_compare ((NMIP6Route *) iter->data, route)) return FALSE; } copy = nm_ip6_route_dup (route); g_return_val_if_fail (copy != NULL, FALSE); priv->routes = g_slist_append (priv->routes, copy); return TRUE; }