+static void wpa_driver_test_scan_cmd(struct wpa_driver_test_data *drv,
+ struct sockaddr *from,
+ socklen_t fromlen,
+ const u8 *data, size_t data_len)
+{
+ char buf[512], *pos, *end;
+ int ret;
+
+ /* data: optional [ STA-addr | ' ' | IEs(hex) ] */
+
+ if (!drv->ibss)
+ return;
+
+ pos = buf;
+ end = buf + sizeof(buf);
+
+ /* reply: SCANRESP BSSID SSID IEs */
+ ret = snprintf(pos, end - pos, "SCANRESP " MACSTR " ",
+ MAC2STR(drv->bssid));
+ if (ret < 0 || ret >= end - pos)
+ return;
+ pos += ret;
+ pos += wpa_snprintf_hex(pos, end - pos,
+ drv->ssid, drv->ssid_len);
+ ret = snprintf(pos, end - pos, " ");
+ if (ret < 0 || ret >= end - pos)
+ return;
+ pos += ret;
+ pos += wpa_snprintf_hex(pos, end - pos, drv->assoc_wpa_ie,
+ drv->assoc_wpa_ie_len);
+
+ if (drv->privacy) {
+ ret = snprintf(pos, end - pos, " PRIVACY");
+ if (ret < 0 || ret >= end - pos)
+ return;
+ pos += ret;
+ }
+
+ ret = snprintf(pos, end - pos, " IBSS");
+ if (ret < 0 || ret >= end - pos)
+ return;
+ pos += ret;
+
+ sendto(drv->test_socket, buf, pos - buf, 0,
+ (struct sockaddr *) from, fromlen);
+}
+
+