bridge: remove stray newline from device status vlan port list
[project/netifd.git] / interface.c
index b3bb60121306006b21c917dee4f446bb2d5b20e3..89654f952c15b571e866dbcf2b84773c63a84d6a 100644 (file)
@@ -34,6 +34,7 @@ enum {
        IFACE_ATTR_IFNAME, /* Backward compatibility */
        IFACE_ATTR_PROTO,
        IFACE_ATTR_AUTO,
+       IFACE_ATTR_ZONE,
        IFACE_ATTR_JAIL,
        IFACE_ATTR_JAIL_DEVICE,
        IFACE_ATTR_JAIL_IFNAME,
@@ -62,6 +63,7 @@ static const struct blobmsg_policy iface_attrs[IFACE_ATTR_MAX] = {
        [IFACE_ATTR_PROTO] = { .name = "proto", .type = BLOBMSG_TYPE_STRING },
        [IFACE_ATTR_IFNAME] = { .name = "ifname", .type = BLOBMSG_TYPE_STRING },
        [IFACE_ATTR_AUTO] = { .name = "auto", .type = BLOBMSG_TYPE_BOOL },
+       [IFACE_ATTR_ZONE] = { .name = "zone", .type = BLOBMSG_TYPE_STRING },
        [IFACE_ATTR_JAIL] = { .name = "jail", .type = BLOBMSG_TYPE_STRING },
        [IFACE_ATTR_JAIL_DEVICE] = { .name = "jail_device", .type = BLOBMSG_TYPE_STRING },
        [IFACE_ATTR_JAIL_IFNAME] = { .name = "jail_ifname", .type = BLOBMSG_TYPE_STRING },
@@ -769,12 +771,13 @@ interface_proto_event_cb(struct interface_proto_state *state, enum interface_pro
 
                netifd_log_message(L_NOTICE, "Interface '%s' is now down\n", iface->name);
                mark_interface_down(iface);
+               interface_write_resolv_conf(iface->jail);
                if (iface->main_dev.dev)
                        device_release(&iface->main_dev);
                if (iface->l3_dev.dev)
                        device_remove_user(&iface->l3_dev);
                interface_handle_config_change(iface);
-               break;
+               return;
        case IFPEV_LINK_LOST:
                if (iface->state != IFS_UP)
                        return;
@@ -832,6 +835,10 @@ interface_alloc(const char *name, struct blob_attr *config, bool dynamic)
        blobmsg_parse(iface_attrs, IFACE_ATTR_MAX, tb,
                      blob_data(config), blob_len(config));
 
+       iface->zone = NULL;
+       if ((cur = tb[IFACE_ATTR_ZONE]))
+               iface->zone = strdup(blobmsg_get_string(cur));
+
        if ((cur = tb[IFACE_ATTR_PROTO]))
                proto_name = blobmsg_data(cur);