- if (o->type == UCI_TYPE_LIST) {
- uci_foreach_element(&o->v.list, e) {
- uci_attr_to_blob(b, e->name, NULL, type);
- }
+ name = alloca(strlen(s->e.name) + 4);
+ sprintf(name, "br-%s", s->e.name);
+ blobmsg_add_string(&b, "name", name);
+
+ uci_to_blob(&b, s, bridge_device_type.config_params);
+ if (!device_create(name, &bridge_device_type, b.head)) {
+ D(INTERFACE, "Failed to create bridge for interface '%s'\n", s->e.name);
+ return -EINVAL;
+ }
+
+ blob_buf_init(&b, 0);
+ blobmsg_add_string(&b, "ifname", name);
+ return 0;
+}
+
+static void
+config_parse_interface(struct uci_section *s, bool alias)
+{
+ struct interface *iface;
+ const char *type = NULL, *disabled;
+ struct blob_attr *config;
+ bool bridge = false;
+
+ disabled = uci_lookup_option_string(uci_ctx, s, "disabled");
+ if (disabled && !strcmp(disabled, "1"))