Lines Matching refs:drv
30 static int wpa_priv_reg_cmd(struct wpa_driver_privsep_data *drv, int cmd) in wpa_priv_reg_cmd() argument
34 res = sendto(drv->priv_socket, &cmd, sizeof(cmd), 0, in wpa_priv_reg_cmd()
35 (struct sockaddr *) &drv->priv_addr, in wpa_priv_reg_cmd()
36 sizeof(drv->priv_addr)); in wpa_priv_reg_cmd()
43 static int wpa_priv_cmd(struct wpa_driver_privsep_data *drv, int cmd, in wpa_priv_cmd() argument
58 msg.msg_name = &drv->priv_addr; in wpa_priv_cmd()
59 msg.msg_namelen = sizeof(drv->priv_addr); in wpa_priv_cmd()
61 if (sendmsg(drv->cmd_socket, &msg, 0) < 0) { in wpa_priv_cmd()
73 FD_SET(drv->cmd_socket, &rfds); in wpa_priv_cmd()
76 res = select(drv->cmd_socket + 1, &rfds, NULL, NULL, &tv); in wpa_priv_cmd()
82 if (FD_ISSET(drv->cmd_socket, &rfds)) { in wpa_priv_cmd()
83 res = recv(drv->cmd_socket, reply, *reply_len, 0); in wpa_priv_cmd()
104 struct wpa_driver_privsep_data *drv = priv; in wpa_driver_privsep_scan() local
124 return wpa_priv_cmd(drv, PRIVSEP_CMD_SCAN, &scan, sizeof(scan), in wpa_driver_privsep_scan()
132 struct wpa_driver_privsep_data *drv = priv; in wpa_driver_privsep_get_scan_results2() local
142 res = wpa_priv_cmd(drv, PRIVSEP_CMD_GET_SCAN_RESULTS, in wpa_driver_privsep_get_scan_results2()
211 struct wpa_driver_privsep_data *drv = priv; in wpa_driver_privsep_set_key() local
243 return wpa_priv_cmd(drv, PRIVSEP_CMD_SET_KEY, &cmd, sizeof(cmd), in wpa_driver_privsep_set_key()
251 struct wpa_driver_privsep_data *drv = priv; in wpa_driver_privsep_authenticate() local
290 res = wpa_priv_cmd(drv, PRIVSEP_CMD_AUTHENTICATE, data, buflen, in wpa_driver_privsep_authenticate()
301 struct wpa_driver_privsep_data *drv = priv; in wpa_driver_privsep_associate() local
334 res = wpa_priv_cmd(drv, PRIVSEP_CMD_ASSOCIATE, data, buflen, in wpa_driver_privsep_associate()
344 struct wpa_driver_privsep_data *drv = priv; in wpa_driver_privsep_get_bssid() local
348 res = wpa_priv_cmd(drv, PRIVSEP_CMD_GET_BSSID, NULL, 0, bssid, &len); in wpa_driver_privsep_get_bssid()
357 struct wpa_driver_privsep_data *drv = priv; in wpa_driver_privsep_get_ssid() local
362 res = wpa_priv_cmd(drv, PRIVSEP_CMD_GET_SSID, NULL, 0, reply, &len); in wpa_driver_privsep_get_ssid()
520 struct wpa_driver_privsep_data *drv = eloop_ctx; in wpa_driver_privsep_receive() local
557 wpa_supplicant_event(drv->ctx, EVENT_SCAN_RESULTS, NULL); in wpa_driver_privsep_receive()
560 wpa_supplicant_event(drv->ctx, EVENT_SCAN_STARTED, NULL); in wpa_driver_privsep_receive()
563 wpa_driver_privsep_event_assoc(drv->ctx, EVENT_ASSOC, in wpa_driver_privsep_receive()
567 wpa_supplicant_event(drv->ctx, EVENT_DISASSOC, NULL); in wpa_driver_privsep_receive()
570 wpa_driver_privsep_event_assoc(drv->ctx, EVENT_ASSOCINFO, in wpa_driver_privsep_receive()
575 drv->ctx, event_buf, event_len); in wpa_driver_privsep_receive()
578 wpa_driver_privsep_event_interface_status(drv->ctx, event_buf, in wpa_driver_privsep_receive()
582 wpa_driver_privsep_event_pmkid_candidate(drv->ctx, event_buf, in wpa_driver_privsep_receive()
586 wpa_driver_privsep_event_ft_response(drv->ctx, event_buf, in wpa_driver_privsep_receive()
590 wpa_driver_privsep_event_rx_eapol(drv->ctx, event_buf, in wpa_driver_privsep_receive()
594 wpa_driver_privsep_event_auth(drv->ctx, event_buf, event_len); in wpa_driver_privsep_receive()
604 struct wpa_driver_privsep_data *drv; in wpa_driver_privsep_init() local
606 drv = os_zalloc(sizeof(*drv)); in wpa_driver_privsep_init()
607 if (drv == NULL) in wpa_driver_privsep_init()
609 drv->ctx = ctx; in wpa_driver_privsep_init()
610 drv->priv_socket = -1; in wpa_driver_privsep_init()
611 drv->cmd_socket = -1; in wpa_driver_privsep_init()
612 os_strlcpy(drv->ifname, ifname, sizeof(drv->ifname)); in wpa_driver_privsep_init()
614 return drv; in wpa_driver_privsep_init()
620 struct wpa_driver_privsep_data *drv = priv; in wpa_driver_privsep_deinit() local
622 if (drv->priv_socket >= 0) { in wpa_driver_privsep_deinit()
623 wpa_priv_reg_cmd(drv, PRIVSEP_CMD_UNREGISTER); in wpa_driver_privsep_deinit()
624 eloop_unregister_read_sock(drv->priv_socket); in wpa_driver_privsep_deinit()
625 close(drv->priv_socket); in wpa_driver_privsep_deinit()
628 if (drv->own_socket_path) { in wpa_driver_privsep_deinit()
629 unlink(drv->own_socket_path); in wpa_driver_privsep_deinit()
630 os_free(drv->own_socket_path); in wpa_driver_privsep_deinit()
633 if (drv->cmd_socket >= 0) { in wpa_driver_privsep_deinit()
634 eloop_unregister_read_sock(drv->cmd_socket); in wpa_driver_privsep_deinit()
635 close(drv->cmd_socket); in wpa_driver_privsep_deinit()
638 if (drv->own_cmd_path) { in wpa_driver_privsep_deinit()
639 unlink(drv->own_cmd_path); in wpa_driver_privsep_deinit()
640 os_free(drv->own_cmd_path); in wpa_driver_privsep_deinit()
643 os_free(drv); in wpa_driver_privsep_deinit()
649 struct wpa_driver_privsep_data *drv = priv; in wpa_driver_privsep_set_param() local
698 drv->own_socket_path = os_malloc(len); in wpa_driver_privsep_set_param()
699 if (drv->own_socket_path == NULL) { in wpa_driver_privsep_set_param()
704 os_snprintf(drv->own_socket_path, len, "%s/wpa_privsep-%d-%d", in wpa_driver_privsep_set_param()
708 drv->own_cmd_path = os_malloc(len); in wpa_driver_privsep_set_param()
709 if (drv->own_cmd_path == NULL) { in wpa_driver_privsep_set_param()
710 os_free(drv->own_socket_path); in wpa_driver_privsep_set_param()
711 drv->own_socket_path = NULL; in wpa_driver_privsep_set_param()
716 os_snprintf(drv->own_cmd_path, len, "%s/wpa_privsep-%d-%d", in wpa_driver_privsep_set_param()
721 drv->priv_addr.sun_family = AF_UNIX; in wpa_driver_privsep_set_param()
722 os_snprintf(drv->priv_addr.sun_path, sizeof(drv->priv_addr.sun_path), in wpa_driver_privsep_set_param()
723 "%s/%s", priv_dir, drv->ifname); in wpa_driver_privsep_set_param()
726 drv->priv_socket = socket(PF_UNIX, SOCK_DGRAM, 0); in wpa_driver_privsep_set_param()
727 if (drv->priv_socket < 0) { in wpa_driver_privsep_set_param()
729 os_free(drv->own_socket_path); in wpa_driver_privsep_set_param()
730 drv->own_socket_path = NULL; in wpa_driver_privsep_set_param()
736 os_strlcpy(addr.sun_path, drv->own_socket_path, sizeof(addr.sun_path)); in wpa_driver_privsep_set_param()
737 if (bind(drv->priv_socket, (struct sockaddr *) &addr, sizeof(addr)) < in wpa_driver_privsep_set_param()
742 close(drv->priv_socket); in wpa_driver_privsep_set_param()
743 drv->priv_socket = -1; in wpa_driver_privsep_set_param()
744 unlink(drv->own_socket_path); in wpa_driver_privsep_set_param()
745 os_free(drv->own_socket_path); in wpa_driver_privsep_set_param()
746 drv->own_socket_path = NULL; in wpa_driver_privsep_set_param()
750 eloop_register_read_sock(drv->priv_socket, wpa_driver_privsep_receive, in wpa_driver_privsep_set_param()
751 drv, NULL); in wpa_driver_privsep_set_param()
753 drv->cmd_socket = socket(PF_UNIX, SOCK_DGRAM, 0); in wpa_driver_privsep_set_param()
754 if (drv->cmd_socket < 0) { in wpa_driver_privsep_set_param()
756 os_free(drv->own_cmd_path); in wpa_driver_privsep_set_param()
757 drv->own_cmd_path = NULL; in wpa_driver_privsep_set_param()
763 os_strlcpy(addr.sun_path, drv->own_cmd_path, sizeof(addr.sun_path)); in wpa_driver_privsep_set_param()
764 if (bind(drv->cmd_socket, (struct sockaddr *) &addr, sizeof(addr)) < 0) in wpa_driver_privsep_set_param()
769 close(drv->cmd_socket); in wpa_driver_privsep_set_param()
770 drv->cmd_socket = -1; in wpa_driver_privsep_set_param()
771 unlink(drv->own_cmd_path); in wpa_driver_privsep_set_param()
772 os_free(drv->own_cmd_path); in wpa_driver_privsep_set_param()
773 drv->own_cmd_path = NULL; in wpa_driver_privsep_set_param()
777 if (wpa_priv_reg_cmd(drv, PRIVSEP_CMD_REGISTER) < 0) { in wpa_driver_privsep_set_param()
789 struct wpa_driver_privsep_data *drv = priv; in wpa_driver_privsep_get_capa() local
793 res = wpa_priv_cmd(drv, PRIVSEP_CMD_GET_CAPA, NULL, 0, capa, &len); in wpa_driver_privsep_get_capa()
808 struct wpa_driver_privsep_data *drv = priv; in wpa_driver_privsep_get_mac_addr() local
810 return drv->own_addr; in wpa_driver_privsep_get_mac_addr()
816 struct wpa_driver_privsep_data *drv = priv; in wpa_driver_privsep_set_country() local
818 return wpa_priv_cmd(drv, PRIVSEP_CMD_SET_COUNTRY, alpha2, in wpa_driver_privsep_set_country()