Lines Matching refs:drv

30 static int wpa_priv_reg_cmd(struct wpa_driver_privsep_data *drv, int cmd)
34 res = sendto(drv->priv_socket, &cmd, sizeof(cmd), 0,
35 (struct sockaddr *) &drv->priv_addr,
36 sizeof(drv->priv_addr));
43 static int wpa_priv_cmd(struct wpa_driver_privsep_data *drv, int cmd,
58 msg.msg_name = &drv->priv_addr;
59 msg.msg_namelen = sizeof(drv->priv_addr);
61 if (sendmsg(drv->cmd_socket, &msg, 0) < 0) {
72 FD_SET(drv->cmd_socket, &rfds);
75 res = select(drv->cmd_socket + 1, &rfds, NULL, NULL, &tv);
81 if (FD_ISSET(drv->cmd_socket, &rfds)) {
82 res = recv(drv->cmd_socket, reply, *reply_len, 0);
102 struct wpa_driver_privsep_data *drv = priv;
106 return wpa_priv_cmd(drv, PRIVSEP_CMD_SCAN, ssid, ssid_len,
114 struct wpa_driver_privsep_data *drv = priv;
124 res = wpa_priv_cmd(drv, PRIVSEP_CMD_GET_SCAN_RESULTS,
193 struct wpa_driver_privsep_data *drv = priv;
216 return wpa_priv_cmd(drv, PRIVSEP_CMD_SET_KEY, &cmd, sizeof(cmd),
224 struct wpa_driver_privsep_data *drv = priv;
255 res = wpa_priv_cmd(drv, PRIVSEP_CMD_ASSOCIATE, data, buflen,
265 struct wpa_driver_privsep_data *drv = priv;
269 res = wpa_priv_cmd(drv, PRIVSEP_CMD_GET_BSSID, NULL, 0, bssid, &len);
278 struct wpa_driver_privsep_data *drv = priv;
283 res = wpa_priv_cmd(drv, PRIVSEP_CMD_GET_SSID, NULL, 0, reply, &len);
299 //struct wpa_driver_privsep_data *drv = priv;
310 //struct wpa_driver_privsep_data *drv = priv;
438 struct wpa_driver_privsep_data *drv = eloop_ctx;
474 wpa_supplicant_event(drv->ctx, EVENT_SCAN_RESULTS, NULL);
477 wpa_driver_privsep_event_assoc(drv->ctx, EVENT_ASSOC,
481 wpa_supplicant_event(drv->ctx, EVENT_DISASSOC, NULL);
484 wpa_driver_privsep_event_assoc(drv->ctx, EVENT_ASSOCINFO,
489 drv->ctx, event_buf, event_len);
492 wpa_driver_privsep_event_interface_status(drv->ctx, event_buf,
496 wpa_driver_privsep_event_pmkid_candidate(drv->ctx, event_buf,
500 wpa_driver_privsep_event_stkstart(drv->ctx, event_buf,
504 wpa_driver_privsep_event_ft_response(drv->ctx, event_buf,
508 wpa_driver_privsep_event_rx_eapol(drv->ctx, event_buf,
519 struct wpa_driver_privsep_data *drv;
521 drv = os_zalloc(sizeof(*drv));
522 if (drv == NULL)
524 drv->ctx = ctx;
525 drv->priv_socket = -1;
526 drv->cmd_socket = -1;
527 os_strlcpy(drv->ifname, ifname, sizeof(drv->ifname));
529 return drv;
535 struct wpa_driver_privsep_data *drv = priv;
537 if (drv->priv_socket >= 0) {
538 wpa_priv_reg_cmd(drv, PRIVSEP_CMD_UNREGISTER);
539 eloop_unregister_read_sock(drv->priv_socket);
540 close(drv->priv_socket);
543 if (drv->own_socket_path) {
544 unlink(drv->own_socket_path);
545 os_free(drv->own_socket_path);
548 if (drv->cmd_socket >= 0) {
549 eloop_unregister_read_sock(drv->cmd_socket);
550 close(drv->cmd_socket);
553 if (drv->own_cmd_path) {
554 unlink(drv->own_cmd_path);
555 os_free(drv->own_cmd_path);
558 os_free(drv);
564 struct wpa_driver_privsep_data *drv = priv;
613 drv->own_socket_path = os_malloc(len);
614 if (drv->own_socket_path == NULL) {
619 os_snprintf(drv->own_socket_path, len, "%s/wpa_privsep-%d-%d",
623 drv->own_cmd_path = os_malloc(len);
624 if (drv->own_cmd_path == NULL) {
625 os_free(drv->own_socket_path);
626 drv->own_socket_path = NULL;
631 os_snprintf(drv->own_cmd_path, len, "%s/wpa_privsep-%d-%d",
636 drv->priv_addr.sun_family = AF_UNIX;
637 os_snprintf(drv->priv_addr.sun_path, sizeof(drv->priv_addr.sun_path),
638 "%s/%s", priv_dir, drv->ifname);
641 drv->priv_socket = socket(PF_UNIX, SOCK_DGRAM, 0);
642 if (drv->priv_socket < 0) {
644 os_free(drv->own_socket_path);
645 drv->own_socket_path = NULL;
651 os_strlcpy(addr.sun_path, drv->own_socket_path, sizeof(addr.sun_path));
652 if (bind(drv->priv_socket, (struct sockaddr *) &addr, sizeof(addr)) <
655 close(drv->priv_socket);
656 drv->priv_socket = -1;
657 unlink(drv->own_socket_path);
658 os_free(drv->own_socket_path);
659 drv->own_socket_path = NULL;
663 eloop_register_read_sock(drv->priv_socket, wpa_driver_privsep_receive,
664 drv, NULL);
666 drv->cmd_socket = socket(PF_UNIX, SOCK_DGRAM, 0);
667 if (drv->cmd_socket < 0) {
669 os_free(drv->own_cmd_path);
670 drv->own_cmd_path = NULL;
676 os_strlcpy(addr.sun_path, drv->own_cmd_path, sizeof(addr.sun_path));
677 if (bind(drv->cmd_socket, (struct sockaddr *) &addr, sizeof(addr)) < 0)
680 close(drv->cmd_socket);
681 drv->cmd_socket = -1;
682 unlink(drv->own_cmd_path);
683 os_free(drv->own_cmd_path);
684 drv->own_cmd_path = NULL;
688 if (wpa_priv_reg_cmd(drv, PRIVSEP_CMD_REGISTER) < 0) {
700 struct wpa_driver_privsep_data *drv = priv;
704 res = wpa_priv_cmd(drv, PRIVSEP_CMD_GET_CAPA, NULL, 0, capa, &len);
713 struct wpa_driver_privsep_data *drv = priv;
715 return drv->own_addr;
721 struct wpa_driver_privsep_data *drv = priv;
723 return wpa_priv_cmd(drv, PRIVSEP_CMD_SET_COUNTRY, alpha2,