remove obsolete /opt/local prefix on Mac OS X
[project/netifd.git] / device.c
index e17df13..3c57a02 100644 (file)
--- a/device.c
+++ b/device.c
@@ -240,12 +240,12 @@ device_init_settings(struct device *dev, struct blob_attr **tb)
        if ((cur = tb[DEV_ATTR_ENABLED]))
                disabled = !blobmsg_get_bool(cur);
 
-       if ((cur = tb[DEV_ATTR_MTU])) {
+       if ((cur = tb[DEV_ATTR_MTU]) && blobmsg_get_u32(cur) >= 68) {
                s->mtu = blobmsg_get_u32(cur);
                s->flags |= DEV_OPT_MTU;
        }
 
-       if ((cur = tb[DEV_ATTR_MTU6])) {
+       if ((cur = tb[DEV_ATTR_MTU6]) && blobmsg_get_u32(cur) >= 1280) {
                s->mtu6 = blobmsg_get_u32(cur);
                s->flags |= DEV_OPT_MTU6;
        }
@@ -450,6 +450,10 @@ void device_release(struct device_user *dep)
        device_broadcast_event(dev, DEV_EVENT_TEARDOWN);
        if (!dev->external)
                dev->set_state(dev, false);
+
+       if (dev->active)
+               return;
+
        device_broadcast_event(dev, DEV_EVENT_DOWN);
 }
 
@@ -933,7 +937,7 @@ device_create(const char *name, struct device_type *type,
        struct device *odev = NULL, *dev;
        enum dev_change_type change;
 
-       odev = device_get(name, false);
+       odev = device_find(name);
        if (odev) {
                odev->current_config = true;
                change = device_apply_config(odev, type, config);