summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2020-07-21 05:21:28 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2020-07-22 19:55:14 +0900
commitc2a6595014c33592a541654b396c8c3f2f36284e (patch)
tree3a5e4898c04c5d815f152a559db063d67cbedd00
parentf281fc1e95ff2e39c3cc4a90444434339ae24c04 (diff)
downloadsystemd-c2a6595014c33592a541654b396c8c3f2f36284e.tar.gz
network: introduce link_save_and_clean()
-rw-r--r--src/network/networkd-link-bus.c3
-rw-r--r--src/network/networkd-link.c11
-rw-r--r--src/network/networkd-link.h1
-rw-r--r--src/network/networkd-manager.c5
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;
}