l3cfg: remove changed flag from nm_l3cfg_add_config()/nm_l3cfg_remove_config()

This commit is contained in:
Thomas Haller 2020-08-28 17:20:53 +02:00
parent 41b9d44f9b
commit bd054bf6fd
No known key found for this signature in database
GPG key ID: 29C2366E4DFC5728
2 changed files with 32 additions and 25 deletions

View file

@ -2297,7 +2297,7 @@ nm_l3cfg_mark_config_dirty (NML3Cfg *self,
} }
} }
void gboolean
nm_l3cfg_add_config (NML3Cfg *self, nm_l3cfg_add_config (NML3Cfg *self,
gconstpointer tag, gconstpointer tag,
gboolean replace_same_tag, gboolean replace_same_tag,
@ -2391,15 +2391,18 @@ nm_l3cfg_add_config (NML3Cfg *self,
if (changed) if (changed)
self->priv.changed_configs = TRUE; self->priv.changed_configs = TRUE;
return changed;
} }
static void static gboolean
_l3cfg_remove_config (NML3Cfg *self, _l3cfg_remove_config (NML3Cfg *self,
gconstpointer tag, gconstpointer tag,
gboolean only_dirty, gboolean only_dirty,
const NML3ConfigData *l3cd) const NML3ConfigData *l3cd)
{ {
GArray *l3_config_datas; GArray *l3_config_datas;
gboolean changed;
gssize idx; gssize idx;
nm_assert (NM_IS_L3CFG (self)); nm_assert (NM_IS_L3CFG (self));
@ -2407,16 +2410,17 @@ _l3cfg_remove_config (NML3Cfg *self,
l3_config_datas = self->priv.p->l3_config_datas; l3_config_datas = self->priv.p->l3_config_datas;
if (!l3_config_datas) if (!l3_config_datas)
return; return FALSE;
idx = 0; idx = 0;
changed = FALSE;
while (TRUE) { while (TRUE) {
idx = _l3_config_datas_find_next (l3_config_datas, idx = _l3_config_datas_find_next (l3_config_datas,
idx, idx,
tag, tag,
l3cd); l3cd);
if (idx < 0) if (idx < 0)
return; return changed;
if ( only_dirty if ( only_dirty
&& !_l3_config_datas_at (l3_config_datas, idx)->dirty) { && !_l3_config_datas_at (l3_config_datas, idx)->dirty) {
@ -2426,27 +2430,30 @@ _l3cfg_remove_config (NML3Cfg *self,
self->priv.changed_configs = TRUE; self->priv.changed_configs = TRUE;
_l3_config_datas_remove_index_fast (l3_config_datas, idx); _l3_config_datas_remove_index_fast (l3_config_datas, idx);
if (!l3cd) if (l3cd) {
return; /* only one was requested to be removed. We are done. */
return TRUE;
}
changed = TRUE;
} }
} }
void gboolean
nm_l3cfg_remove_config (NML3Cfg *self, nm_l3cfg_remove_config (NML3Cfg *self,
gconstpointer tag, gconstpointer tag,
const NML3ConfigData *ifcfg) const NML3ConfigData *ifcfg)
{ {
nm_assert (ifcfg); nm_assert (ifcfg);
_l3cfg_remove_config (self, tag, FALSE, ifcfg); return _l3cfg_remove_config (self, tag, FALSE, ifcfg);
} }
void gboolean
nm_l3cfg_remove_config_all (NML3Cfg *self, nm_l3cfg_remove_config_all (NML3Cfg *self,
gconstpointer tag, gconstpointer tag,
gboolean only_dirty) gboolean only_dirty)
{ {
_l3cfg_remove_config (self, tag, only_dirty, NULL); return _l3cfg_remove_config (self, tag, only_dirty, NULL);
} }
/*****************************************************************************/ /*****************************************************************************/

View file

@ -128,23 +128,23 @@ void nm_l3cfg_mark_config_dirty (NML3Cfg *self,
gconstpointer tag, gconstpointer tag,
gboolean dirty); gboolean dirty);
void nm_l3cfg_add_config (NML3Cfg *self, gboolean nm_l3cfg_add_config (NML3Cfg *self,
gconstpointer tag, gconstpointer tag,
gboolean replace_same_tag, gboolean replace_same_tag,
const NML3ConfigData *l3cd, const NML3ConfigData *l3cd,
int priority, int priority,
guint32 default_route_penalty_4, guint32 default_route_penalty_4,
guint32 default_route_penalty_6, guint32 default_route_penalty_6,
guint32 acd_timeout_msec, guint32 acd_timeout_msec,
NML3ConfigMergeFlags merge_flags); NML3ConfigMergeFlags merge_flags);
void nm_l3cfg_remove_config (NML3Cfg *self, gboolean nm_l3cfg_remove_config (NML3Cfg *self,
gconstpointer tag,
const NML3ConfigData *ifcfg);
void nm_l3cfg_remove_config_all (NML3Cfg *self,
gconstpointer tag, gconstpointer tag,
gboolean only_dirty); const NML3ConfigData *ifcfg);
gboolean nm_l3cfg_remove_config_all (NML3Cfg *self,
gconstpointer tag,
gboolean only_dirty);
/*****************************************************************************/ /*****************************************************************************/