static const char * const eventnames[] = {
[IFEV_DOWN] = "ifdown",
[IFEV_UP] = "ifup",
+ [IFEV_UP_FAILED] = "ifup-failed",
[IFEV_UPDATE] = "ifupdate",
[IFEV_FREE] = "free",
[IFEV_RELOAD] = "reload",
[IFEV_LINK_UP] = "iflink",
+ [IFEV_CREATE] = "create",
};
static void
int pid;
pid = fork();
- if (pid < 0)
- return task_complete(NULL, -1);
+ if (pid < 0) {
+ task_complete(NULL, -1);
+ return;
+ }
if (pid > 0) {
task.pid = pid;
if ((current_ev == IFEV_UP || current_ev == IFEV_UPDATE) && current->l3_dev.dev)
device = current->l3_dev.dev->ifname;
- D(SYSTEM, "Call hotplug handler for interface '%s', event '%s' (%s)\n",
+ D(SYSTEM, "Call hotplug handler for interface '%s', event '%s' (%s)",
current->name, eventnames[current_ev], device ? device : "none");
run_cmd(current->name, device, current_ev, current->updated);
}
task_complete(struct uloop_process *proc, int ret)
{
if (current)
- D(SYSTEM, "Complete hotplug handler for interface '%s'\n", current->name);
+ D(SYSTEM, "Complete hotplug handler for interface '%s'", current->name);
current = NULL;
call_hotplug();
}
static void
interface_queue_event(struct interface *iface, enum interface_event ev)
{
- D(SYSTEM, "Queue hotplug handler for interface '%s', event '%s'\n",
+ D(SYSTEM, "Queue hotplug handler for interface '%s', event '%s'",
iface->name, eventnames[ev]);
if (ev == IFEV_UP || ev == IFEV_DOWN)
netifd_ubus_interface_event(iface, ev == IFEV_UP);
switch (ev) {
case IFEV_LINK_UP:
case IFEV_UP:
+ case IFEV_UP_FAILED:
case IFEV_UPDATE:
case IFEV_DOWN:
interface_queue_event(iface, ev);
break;
case IFEV_FREE:
- case IFEV_RELOAD:
interface_dequeue_event(iface);
break;
+ default:
+ break;
}
}