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",
switch (ev) {
case IFEV_LINK_UP:
case IFEV_UP:
+ case IFEV_UP_FAILED:
case IFEV_UPDATE:
case IFEV_DOWN:
interface_queue_event(iface, ev);
adev = iface->l3_dev.dev;
/* fall through */
case IFEV_DOWN:
+ case IFEV_UP_FAILED:
alias_notify_device(iface->name, adev);
break;
default:
iface->state = IFS_DOWN;
if (state == IFS_UP)
interface_event(iface, IFEV_DOWN);
+ else
+ interface_event(iface, IFEV_UP_FAILED);
interface_ip_set_enabled(&iface->config_ip, false);
interface_ip_set_enabled(&iface->proto_ip, false);
interface_ip_flush(&iface->proto_ip);
interface_set_available(alias, true);
break;
case IFEV_DOWN:
+ case IFEV_UP_FAILED:
interface_set_available(alias, false);
interface_set_main_dev(alias, NULL);
break;