[OpenWrt-Devel] [PATCH 2/3] rpcd, iwinfo: add support for vendor_elements
Roman Yeryomin
leroi.lists at gmail.com
Wed May 13 07:56:37 EDT 2015
Signed-off-by: Roman Yeryomin <roman at advem.lv>
---
iwinfo.c | 41 ++++++++++++++++++++++++++++++++++++++++-
1 file changed, 40 insertions(+), 1 deletion(-)
diff --git a/iwinfo.c b/iwinfo.c
index 325c07a..6e34ea1 100644
--- a/iwinfo.c
+++ b/iwinfo.c
@@ -317,6 +317,41 @@ rpc_iwinfo_info(struct ubus_context *ctx, struct ubus_object *obj,
return UBUS_STATUS_OK;
}
+static void
+rpc_iwinfo_add_ve(const char *name, struct iwinfo_scanlist_entry *e)
+{
+ void *c, *d;
+ char oui[7];
+ char *data = NULL;
+ int datalen, i, di;
+
+ d = blobmsg_open_array(&buf, name);
+ for (i = 0; i < IWINFO_VE_MAX; i++) {
+ if (e->ve[i].len < 1)
+ break;
+ c = blobmsg_open_table(&buf, NULL);
+
+ snprintf(oui, sizeof(oui), "%02x%02x%02x", e->ve[i].oui[0],
+ e->ve[i].oui[1],
+ e->ve[i].oui[2]);
+ blobmsg_add_string(&buf, "oui", oui);
+
+ datalen = e->ve[i].len * 2;
+ data = (char *)malloc(datalen + 1);
+ if (!data) {
+ blobmsg_close_table(&buf, c);
+ break;
+ }
+ for (di = 0; di < e->ve[i].len - sizeof(e->ve[i].oui); di++)
+ snprintf(data + di * 2, 3, "%02x", e->ve[i].data[di]);
+ blobmsg_add_string(&buf, "data", data);
+ free(data);
+
+ blobmsg_close_table(&buf, c);
+ }
+ blobmsg_close_array(&buf, d);
+}
+
static int
rpc_iwinfo_scan(struct ubus_context *ctx, struct ubus_object *obj,
struct ubus_request_data *req, const char *method,
@@ -325,7 +360,7 @@ rpc_iwinfo_scan(struct ubus_context *ctx, struct ubus_object *obj,
int i, rv, len;
void *c, *d;
char mac[18];
- char res[IWINFO_BUFSIZE];
+ char res[IWINFO_MAX_APS * sizeof(struct iwinfo_scanlist_entry)];
struct iwinfo_scanlist_entry *e;
rv = rpc_iwinfo_open(msg);
@@ -363,6 +398,10 @@ rpc_iwinfo_scan(struct ubus_context *ctx, struct ubus_object *obj,
rpc_iwinfo_add_encryption("encryption", &e->crypto);
+ /* add vendor elements if exist */
+ if (e->ve[0].len)
+ rpc_iwinfo_add_ve("vendor_elements", e);
+
blobmsg_close_table(&buf, d);
}
}
--
2.1.4
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
More information about the openwrt-devel
mailing list