static int bridge_enter_ready(Bridge *bridge) {
bridge_join_callback *callback;
+ assert(bridge);
+ assert(bridge->name);
+
bridge->state = BRIDGE_STATE_READY;
log_info_bridge(bridge, "bridge ready");
Bridge *bridge = userdata;
int r;
- assert(bridge->state == BRIDGE_STATE_CREATING);
+ assert(bridge->state != _BRIDGE_STATE_INVALID);
r = sd_rtnl_message_get_errno(m);
if (r < 0) {
return 1;
}
- if (bridge->link)
- bridge_enter_ready(bridge);
- else
- bridge->state = BRIDGE_STATE_CREATED;
-
return 1;
}
int bridge_set_link(Manager *m, Link *link) {
Bridge *bridge;
+ int r;
- bridge = hashmap_get(m->bridges, link->ifname);
- if (!bridge)
- return -ENOENT;
+ r = bridge_get(m, link->ifname, &bridge);
+ if (r < 0)
+ return r;
if (bridge->link && bridge->link != link)
return -EEXIST;
bridge->link = link;
- if (bridge->state == BRIDGE_STATE_CREATED)
- bridge_enter_ready(bridge);
+ bridge_enter_ready(bridge);
return 0;
}