X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fnetifd.git;a=blobdiff_plain;f=interface.c;h=1f83be32f5a0b269e314632005cb41a2b43ad505;hp=6ca1d0da0be7cd61ec835a8e691a83a8a02490c2;hb=01901f485a9f6c627fabdd2174f3b315a2e3c9cd;hpb=f2689565dba0c99c88c2caab2a1193635b3b4744 diff --git a/interface.c b/interface.c index 6ca1d0d..1f83be3 100644 --- a/interface.c +++ b/interface.c @@ -329,7 +329,7 @@ interface_cb(struct device_user *dep, enum device_event ev) break; case DEV_EVENT_LINK_UP: new_state = true; - case DEV_EVENT_LINK_DOWN: + case DEV_EVENT_LINK_DOWN: interface_set_link_state(iface, new_state); break; case DEV_EVENT_TOPO_CHANGE: @@ -766,8 +766,10 @@ interface_set_l3_dev(struct interface *iface, struct device *dev) device_add_user(&iface->l3_dev, dev); if (dev) { - if (claimed) - device_claim(&iface->l3_dev); + if (claimed) { + if (device_claim(&iface->l3_dev) < 0) + return; + } interface_ip_set_enabled(&iface->config_ip, enabled); } } @@ -787,8 +789,10 @@ interface_set_main_dev(struct interface *iface, struct device *dev) return; } - if (claimed) - device_claim(&iface->l3_dev); + if (claimed) { + if (device_claim(&iface->l3_dev) < 0) + return; + } if (!iface->l3_dev.dev) interface_set_l3_dev(iface, dev);