X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fnetifd.git;a=blobdiff_plain;f=wireless.c;h=33fab451184d32cd94eaf148e49fec53cdf9af3f;hp=0e293a0783d189581855737d4ec117f7e8679285;hb=26cb3b2a0aebb1b9dc07daf7b54bd8400d6d659b;hpb=e784303c4ca8ee86e57521a00ef5f9d0e98617f8 diff --git a/wireless.c b/wireless.c index 0e293a0..33fab45 100644 --- a/wireless.c +++ b/wireless.c @@ -51,9 +51,9 @@ static const struct uci_blob_param_list vif_param = { static void put_container(struct blob_buf *buf, struct blob_attr *attr, const char *name) { - void *c = blobmsg_open_table(&b, name); - blob_put_raw(&b, blob_data(attr), blob_len(attr)); - blobmsg_close_table(&b, c); + void *c = blobmsg_open_table(buf, name); + blob_put_raw(buf, blob_data(attr), blob_len(attr)); + blobmsg_close_table(buf, c); } static void @@ -202,6 +202,12 @@ static void wireless_interface_handle_link(struct wireless_interface *vif, bool if (!vif->network || !vif->ifname) return; + if (up) { + struct device *dev = device_get(vif->ifname, 2); + if (dev) + dev->wireless = true; + } + blobmsg_for_each_attr(cur, vif->network, rem) { network = blobmsg_data(cur); @@ -209,7 +215,7 @@ static void wireless_interface_handle_link(struct wireless_interface *vif, bool if (!iface) continue; - interface_handle_link(iface, vif->ifname, up); + interface_handle_link(iface, vif->ifname, up, true); } } @@ -654,7 +660,7 @@ void wireless_interface_create(struct wireless_device *wdev, struct blob_attr *d struct wireless_interface *vif; struct blob_attr *tb[__VIF_ATTR_MAX]; struct blob_attr *cur; - char *name_buf; + char *name_buf, *section_buf; char name[8]; blobmsg_parse(vif_policy, __VIF_ATTR_MAX, tb, blob_data(data), blob_len(data)); @@ -665,11 +671,13 @@ void wireless_interface_create(struct wireless_device *wdev, struct blob_attr *d sprintf(name, "%d", wdev->vif_idx++); - vif = calloc_a(sizeof(*vif), &name_buf, strlen(name) + 1); + vif = calloc_a(sizeof(*vif), + &name_buf, strlen(name) + 1, + §ion_buf, strlen(section) + 1); vif->name = strcpy(name_buf, name); vif->wdev = wdev; vif->config = data; - vif->section = section; + vif->section = strcpy(section_buf, section); vlist_add(&wdev->interfaces, &vif->node, vif->name); }