iface->state = IFS_TEARDOWN;
interface_event(iface, IFEV_DOWN);
iface->state = IFS_TEARDOWN;
interface_event(iface, IFEV_DOWN);
- iface->proto->handler(iface->proto, PROTO_CMD_TEARDOWN, force);
- release_device(iface->main_dev.dev);
+ interface_proto_event(iface->proto, PROTO_CMD_TEARDOWN, force);
iface->main_dev.cb = interface_cb;
iface->l3_iface = &iface->main_dev;
strncpy(iface->name, name, sizeof(iface->name) - 1);
list_add(&iface->list, &interfaces);
INIT_LIST_HEAD(&iface->errors);
iface->main_dev.cb = interface_cb;
iface->l3_iface = &iface->main_dev;
strncpy(iface->name, name, sizeof(iface->name) - 1);
list_add(&iface->list, &interfaces);
INIT_LIST_HEAD(&iface->errors);
- if (dev && dev->hotplug_ops) {
- dev->hotplug_ops->del(dev, llif);
+ if (mdev && mdev->hotplug_ops) {
+ mdev->hotplug_ops->del(mdev, dev);
- if (dev && dev->hotplug_ops)
- return dev->hotplug_ops->add(dev, llif);
+ if (mdev && mdev->hotplug_ops)
+ return mdev->hotplug_ops->add(mdev, dev);
+
+void
+start_pending_interfaces(void)
+{
+ struct interface *iface;
+
+ list_for_each_entry(iface, &interfaces, list) {
+ if (iface->active && iface->autostart)
+ set_interface_up(iface);
+ }
+}