}
n = calloc(1, sizeof(*n) + len);
+ if (!n)
+ return UBUS_STATUS_UNKNOWN_ERROR;
+
memcpy(n->data, data, len);
n->node.key = blobmsg_name(n->data);
avl_insert(&iface->data, &n->node);
if (state == IFS_DOWN)
return;
+ iface->link_up_event = false;
iface->state = IFS_DOWN;
if (state == IFS_UP)
interface_event(iface, IFEV_DOWN);
netifd_log_message(L_NOTICE, "Interface '%s' has link connectivity %s\n", iface->name, new_state ? "" : "loss");
iface->link_state = new_state;
interface_check_state(iface);
+
+ if (new_state && iface->force_link && iface->state == IFS_UP && !iface->link_up_event) {
+ interface_event(iface, IFEV_LINK_UP);
+ iface->link_up_event = true;
+ }
}
static void
case IFEV_FREE:
interface_remove_user(dep);
break;
- case IFEV_RELOAD:
- case IFEV_UPDATE:
+ default:
break;
}
}