diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2020-07-21 05:21:28 +0900 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2020-07-22 19:55:14 +0900 |
commit | c2a6595014c33592a541654b396c8c3f2f36284e (patch) | |
tree | 3a5e4898c04c5d815f152a559db063d67cbedd00 | |
parent | f281fc1e95ff2e39c3cc4a90444434339ae24c04 (diff) | |
download | systemd-c2a6595014c33592a541654b396c8c3f2f36284e.tar.gz |
network: introduce link_save_and_clean()
-rw-r--r-- | src/network/networkd-link-bus.c | 3 | ||||
-rw-r--r-- | src/network/networkd-link.c | 11 | ||||
-rw-r--r-- | src/network/networkd-link.h | 1 | ||||
-rw-r--r-- | src/network/networkd-manager.c | 5 |
4 files changed, 15 insertions, 5 deletions
diff --git a/src/network/networkd-link-bus.c b/src/network/networkd-link-bus.c index be19671505..ad114e1173 100644 --- a/src/network/networkd-link-bus.c +++ b/src/network/networkd-link-bus.c @@ -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); } diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 1d73a3c34f..092d130a44 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -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", diff --git a/src/network/networkd-link.h b/src/network/networkd-link.h index e736970503..4534180128 100644 --- a/src/network/networkd-link.h +++ b/src/network/networkd-link.h @@ -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); diff --git a/src/network/networkd-manager.c b/src/network/networkd-manager.c index c287367d29..59ec0de8d3 100644 --- a/src/network/networkd-manager.c +++ b/src/network/networkd-manager.c @@ -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; } |