Home | History | Annotate | Download | only in wpa_supplicant

Lines Matching refs:dst

93 static void ctrl_close_pipe(struct wpa_ctrl_dst *dst);
99 static void global_close_pipe(struct wpa_global_dst *dst);
122 struct wpa_ctrl_dst *dst, *next;
124 dst = priv->ctrl_dst;
126 while (dst) {
127 next = dst->next;
128 if (ctrl_broken_pipe(dst->pipe, dst->used)) {
130 dst);
131 ctrl_close_pipe(dst);
133 dst = next;
140 struct wpa_ctrl_dst *dst;
144 dst = os_zalloc(sizeof(*dst));
145 if (dst == NULL)
147 wpa_printf(MSG_DEBUG, "CTRL: Open pipe %p", dst);
149 dst->priv = priv;
150 dst->debug_level = MSG_INFO;
151 dst->pipe = INVALID_HANDLE_VALUE;
153 dst->overlap.hEvent = CreateEvent(NULL, TRUE, TRUE, NULL);
154 if (dst->overlap.hEvent == NULL) {
160 eloop_register_event(dst->overlap.hEvent,
161 sizeof(dst->overlap.hEvent),
162 wpa_supplicant_ctrl_iface_receive, dst, NULL);
173 dst->pipe = CreateNamedPipe(name,
181 if (dst->pipe == INVALID_HANDLE_VALUE) {
187 if (ConnectNamedPipe(dst->pipe, &dst->overlap)) {
190 CloseHandle(dst->pipe);
191 os_free(dst);
204 if (SetEvent(dst->overlap.hEvent))
210 CloseHandle(dst->pipe);
211 os_free(dst);
215 dst->next = priv->ctrl_dst;
216 if (dst->next)
217 dst->next->prev = dst;
218 priv->ctrl_dst = dst;
223 ctrl_close_pipe(dst);
228 static void ctrl_close_pipe(struct wpa_ctrl_dst *dst)
230 wpa_printf(MSG_DEBUG, "CTRL: close pipe %p", dst);
232 if (dst->overlap.hEvent) {
233 eloop_unregister_event(dst->overlap.hEvent,
234 sizeof(dst->overlap.hEvent));
235 CloseHandle(dst->overlap.hEvent);
238 if (dst->pipe != INVALID_HANDLE_VALUE) {
243 * FlushFileBuffers(dst->pipe);
245 CloseHandle(dst->pipe);
248 if (dst->prev)
249 dst->prev->next = dst->next;
251 dst->priv->ctrl_dst = dst->next;
252 if (dst->next)
253 dst->next->prev = dst->prev;
255 os_free(dst->rsp_buf);
256 os_free(dst);
263 struct wpa_ctrl_dst *dst = (struct wpa_ctrl_dst *) overlap;
264 wpa_printf(MSG_DEBUG, "CTRL: Overlapped write completed: dst=%p "
265 "err=%d bytes=%d", dst, (int) err, (int) bytes);
267 ctrl_close_pipe(dst);
271 os_free(dst->rsp_buf);
272 dst->rsp_buf = NULL;
274 if (!ReadFileEx(dst->pipe, dst->req_buf, sizeof(dst->req_buf),
275 &dst->overlap, ctrl_iface_read_completed)) {
278 ctrl_close_pipe(dst);
281 wpa_printf(MSG_DEBUG, "CTRL: Overlapped read started for %p", dst);
285 static void wpa_supplicant_ctrl_iface_rx(struct wpa_ctrl_dst *dst, size_t len)
287 struct wpa_supplicant *wpa_s = dst->priv->wpa_s;
291 char *buf = dst->req_buf;
293 dst->used = 1;
299 dst->attached = 1;
304 dst->attached = 0;
309 dst->debug_level = atoi(buf + 6);
327 os_free(dst->rsp_buf);
328 dst->rsp_buf = os_malloc(send_len);
329 if (dst->rsp_buf == NULL) {
330 ctrl_close_pipe(dst);
334 os_memcpy(dst->rsp_buf, send_buf, send_len);
337 if (!WriteFileEx(dst->pipe, dst->rsp_buf, send_len, &dst->overlap,
341 ctrl_close_pipe(dst);
344 dst);
355 struct wpa_ctrl_dst *dst = (struct wpa_ctrl_dst *) overlap;
356 wpa_printf(MSG_DEBUG, "CTRL: Overlapped read completed: dst=%p err=%d "
357 "bytes=%d", dst, (int) err, (int) bytes);
359 wpa_supplicant_ctrl_iface_rx(dst, bytes);
365 struct wpa_ctrl_dst *dst = eloop_data;
366 struct ctrl_iface_priv *priv = dst->priv;
370 ResetEvent(dst->overlap.hEvent);
372 if (!GetOverlappedResult(dst->pipe, &dst->overlap, &bytes, FALSE)) {
384 ctrl_iface_write_completed(0, 0, &dst->overlap);
484 struct wpa_ctrl_dst *dst, *next;
491 dst = priv->ctrl_dst;
492 if (dst == NULL)
506 while (dst) {
507 next = dst->next;
508 if (dst->attached && level >= dst->debug_level) {
510 dst);
511 if (!WriteFile(dst->pipe, sbuf, llen + len, &written,
513 wpa_printf(MSG_DEBUG, "CTRL: WriteFile to dst "
515 dst, (int) GetLastError());
516 dst->errors++;
517 if (dst->errors > 10)
518 ctrl_close_pipe(dst);
520 dst->errors = 0;
523 dst = next;
563 struct wpa_global_dst *dst, *next;
565 dst = priv->ctrl_dst;
567 while (dst) {
568 next = dst->next;
569 if (ctrl_broken_pipe(dst->pipe, dst->used)) {
571 dst);
572 global_close_pipe(dst);
574 dst = next;
581 struct wpa_global_dst *dst;
584 dst = os_zalloc(sizeof(*dst));
585 if (dst == NULL)
587 wpa_printf(MSG_DEBUG, "CTRL: Open pipe %p", dst);
589 dst->priv = priv;
590 dst->pipe = INVALID_HANDLE_VALUE;
592 dst->overlap.hEvent = CreateEvent(NULL, TRUE, TRUE, NULL);
593 if (dst->overlap.hEvent == NULL) {
599 eloop_register_event(dst->overlap.hEvent,
600 sizeof(dst->overlap.hEvent),
601 wpa_supplicant_global_iface_receive, dst, NULL);
604 dst->pipe = CreateNamedPipe(NAMED_PIPE_PREFIX,
611 if (dst->pipe == INVALID_HANDLE_VALUE) {
617 if (ConnectNamedPipe(dst->pipe, &dst->overlap)) {
620 CloseHandle(dst->pipe);
621 os_free(dst);
634 if (SetEvent(dst->overlap.hEvent))
640 CloseHandle(dst->pipe);
641 os_free(dst);
645 dst->next = priv->ctrl_dst;
646 if (dst->next)
647 dst->next->prev = dst;
648 priv->ctrl_dst = dst;
653 global_close_pipe(dst);
658 static void global_close_pipe(struct wpa_global_dst *dst)
660 wpa_printf(MSG_DEBUG, "CTRL: close pipe %p", dst);
662 if (dst->overlap.hEvent) {
663 eloop_unregister_event(dst->overlap.hEvent,
664 sizeof(dst->overlap.hEvent));
665 CloseHandle(dst->overlap.hEvent);
668 if (dst->pipe != INVALID_HANDLE_VALUE) {
673 * FlushFileBuffers(dst
675 CloseHandle(dst->pipe);
678 if (dst->prev)
679 dst->prev->next = dst->next;
681 dst->priv->ctrl_dst = dst->next;
682 if (dst->next)
683 dst->next->prev = dst->prev;
685 os_free(dst->rsp_buf);
686 os_free(dst);
693 struct wpa_global_dst *dst = (struct wpa_global_dst *) overlap;
694 wpa_printf(MSG_DEBUG, "CTRL: Overlapped write completed: dst=%p "
695 "err=%d bytes=%d", dst, (int) err, (int) bytes);
697 global_close_pipe(dst);
701 os_free(dst->rsp_buf);
702 dst->rsp_buf = NULL;
704 if (!ReadFileEx(dst->pipe, dst->req_buf, sizeof(dst->req_buf),
705 &dst->overlap, global_iface_read_completed)) {
708 global_close_pipe(dst);
714 wpa_printf(MSG_DEBUG, "CTRL: Overlapped read started for %p", dst);
718 static void wpa_supplicant_global_iface_rx(struct wpa_global_dst *dst,
721 struct wpa_global *global = dst->priv->global;
724 char *buf = dst->req_buf;
726 dst->used = 1;
740 os_free(dst->rsp_buf);
741 dst->rsp_buf = NULL;
745 os_free(dst->rsp_buf);
746 dst->rsp_buf = os_malloc(send_len);
747 if (dst->rsp_buf == NULL) {
748 global_close_pipe(dst);
752 os_memcpy(dst->rsp_buf, send_buf, send_len);
755 if (!WriteFileEx(dst->pipe, dst->rsp_buf, send_len, &dst->overlap,
759 global_close_pipe(dst);
762 dst);
770 struct wpa_global_dst *dst = (struct wpa_global_dst *) overlap;
771 wpa_printf(MSG_DEBUG, "CTRL: Overlapped read completed: dst=%p err=%d "
772 "bytes=%d", dst, (int) err, (int) bytes);
774 wpa_supplicant_global_iface_rx(dst, bytes);
781 struct wpa_global_dst *dst = eloop_data;
782 struct ctrl_iface_global_priv *priv = dst->priv;
786 ResetEvent(dst->overlap.hEvent);
788 if (!GetOverlappedResult(dst->pipe, &dst->overlap, &bytes, FALSE)) {
803 global_iface_write_completed(0, 0, &dst->overlap);