interface_event(struct interface *iface, enum interface_event ev)
{
struct interface_user *dep, *tmp;
+ struct device *adev = NULL;
list_for_each_entry_safe(dep, tmp, &iface->users, list)
dep->cb(dep, iface, ev);
list_for_each_entry_safe(dep, tmp, &iface_all_users, list)
dep->cb(dep, iface, ev);
+
+ switch (ev) {
+ case IFEV_UP:
+ adev = iface->main_dev.dev;
+ /* fall through */
+ case IFEV_DOWN:
+ alias_notify_device(iface->name, adev);
+ break;
+ default:
+ break;
+ }
}
static void
}
interface_set_available(iface, new_state);
+ if (!new_state && dep->dev->external)
+ interface_set_main_dev(iface, NULL);
}
void
if (!if_old->config_autostart && if_new->config_autostart)
if_old->autostart = true;
+ if_old->device_config = if_new->device_config;
if_old->config_autostart = if_new->config_autostart;
if_old->ifname = if_new->ifname;
if_old->parent_ifname = if_new->parent_ifname;