network: introduce link_save_and_clean()

This commit is contained in:
Yu Watanabe 2020-07-21 05:21:28 +09:00
parent f281fc1e95
commit c2a6595014
4 changed files with 15 additions and 5 deletions

View file

@ -629,10 +629,9 @@ int bus_link_method_reconfigure(sd_bus_message *message, void *userdata, sd_bus_
return r;
link_set_state(l, LINK_STATE_INITIALIZED);
r = link_save(l);
r = link_save_and_clean(l);
if (r < 0)
return r;
link_clean(l);
return sd_bus_reply_method_return(message, NULL);
}

View file

@ -4525,6 +4525,17 @@ void link_clean(Link *link) {
link_unref(set_remove(link->manager->dirty_links, link));
}
int link_save_and_clean(Link *link) {
int r;
r = link_save(link);
if (r < 0)
return r;
link_clean(link);
return 0;
}
static const char* const link_state_table[_LINK_STATE_MAX] = {
[LINK_STATE_PENDING] = "pending",
[LINK_STATE_INITIALIZED] = "initialized",

View file

@ -208,6 +208,7 @@ int link_update(Link *link, sd_netlink_message *message);
void link_dirty(Link *link);
void link_clean(Link *link);
int link_save(Link *link);
int link_save_and_clean(Link *link);
int link_carrier_reset(Link *link);
bool link_has_carrier(Link *link);

View file

@ -1727,8 +1727,7 @@ static int manager_dirty_handler(sd_event_source *s, void *userdata) {
manager_save(m);
SET_FOREACH(link, m->dirty_links, i)
if (link_save(link) >= 0)
link_clean(link);
(void) link_save_and_clean(link);
return 1;
}
@ -1899,7 +1898,7 @@ int manager_start(Manager *m) {
manager_save(m);
HASHMAP_FOREACH(link, m->links, i)
link_save(link);
(void) link_save(link);
return 0;
}