Home | History | Annotate | Download | only in drivers

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;
427 struct wpa_driver_privsep_data *drv = eloop_ctx;
463 wpa_supplicant_event(drv->ctx, EVENT_SCAN_RESULTS, NULL);
466 wpa_driver_privsep_event_assoc(drv->ctx, EVENT_ASSOC,
470 wpa_supplicant_event(drv->ctx, EVENT_DISASSOC, NULL);
473 wpa_driver_privsep_event_assoc(drv->ctx, EVENT_ASSOCINFO,
478 drv->ctx, event_buf, event_len);
481 wpa_driver_privsep_event_interface_status(drv->ctx, event_buf,
485 wpa_driver_privsep_event_pmkid_candidate(drv->ctx, event_buf,
489 wpa_driver_privsep_event_stkstart(drv->ctx, event_buf,
493 wpa_driver_privsep_event_ft_response(drv->ctx, event_buf,
497 wpa_driver_privsep_event_rx_eapol(drv->ctx, event_buf,
508 struct wpa_driver_privsep_data *drv;
510 drv = os_zalloc(sizeof(*drv));
511 if (drv == NULL)
513 drv->ctx = ctx;
514 drv->priv_socket = -1;
515 drv->cmd_socket = -1;
516 os_strlcpy(drv->ifname, ifname, sizeof(drv->ifname));
518 return drv;
524 struct wpa_driver_privsep_data *drv = priv;
526 if (drv->priv_socket >= 0) {
527 wpa_priv_reg_cmd(drv, PRIVSEP_CMD_UNREGISTER);
528 eloop_unregister_read_sock(drv->priv_socket);
529 close(drv->priv_socket);
532 if (drv->own_socket_path) {
533 unlink(drv->own_socket_path);
534 os_free(drv->own_socket_path);
537 if (drv->cmd_socket >= 0) {
538 eloop_unregister_read_sock(drv->cmd_socket);
539 close(drv->cmd_socket);
542 if (drv->own_cmd_path) {
543 unlink(drv->own_cmd_path);
544 os_free(drv->own_cmd_path);
547 os_free(drv);
553 struct wpa_driver_privsep_data *drv = priv;
602 drv->own_socket_path = os_malloc(len);
603 if (drv->own_socket_path == NULL) {
608 os_snprintf(drv->own_socket_path, len, "%s/wpa_privsep-%d-%d",
612 drv->own_cmd_path = os_malloc(len);
613 if (drv->own_cmd_path == NULL) {
614 os_free(drv->own_socket_path);
615 drv->own_socket_path = NULL;
620 os_snprintf(drv->own_cmd_path, len, "%s/wpa_privsep-%d-%d",
625 drv->priv_addr.sun_family = AF_UNIX;
626 os_snprintf(drv->priv_addr.sun_path, sizeof(drv->priv_addr.sun_path),
627 "%s/%s", priv_dir, drv->ifname);
630 drv->priv_socket = socket(PF_UNIX, SOCK_DGRAM, 0);
631 if (drv->priv_socket < 0) {
633 os_free(drv->own_socket_path);
634 drv->own_socket_path = NULL;
640 os_strlcpy(addr.sun_path, drv->own_socket_path, sizeof(addr.sun_path));
641 if (bind(drv->priv_socket, (struct sockaddr *) &addr, sizeof(addr)) <
644 close(drv->priv_socket);
645 drv->priv_socket = -1;
646 unlink(drv->own_socket_path);
647 os_free(drv->own_socket_path);
648 drv->own_socket_path = NULL;
652 eloop_register_read_sock(drv->priv_socket, wpa_driver_privsep_receive,
653 drv, NULL);
655 drv->cmd_socket = socket(PF_UNIX, SOCK_DGRAM, 0);
656 if (drv->cmd_socket < 0) {
658 os_free(drv->own_cmd_path);
659 drv->own_cmd_path = NULL;
665 os_strlcpy(addr.sun_path, drv->own_cmd_path, sizeof(addr.sun_path));
666 if (bind(drv->cmd_socket, (struct sockaddr *) &addr, sizeof(addr)) < 0)
669 close(drv->cmd_socket);
670 drv->cmd_socket = -1;
671 unlink(drv->own_cmd_path);
672 os_free(drv->own_cmd_path);
673 drv->own_cmd_path = NULL;
677 if (wpa_priv_reg_cmd(drv, PRIVSEP_CMD_REGISTER) < 0) {
689 struct wpa_driver_privsep_data *drv = priv;
693 res = wpa_priv_cmd(drv, PRIVSEP_CMD_GET_CAPA, NULL, 0, capa, &len);
702 struct wpa_driver_privsep_data *drv = priv;
704 return drv->own_addr;
710 struct wpa_driver_privsep_data *drv = priv;
712 return wpa_priv_cmd(drv, PRIVSEP_CMD_SET_COUNTRY, alpha2,