/* ISC license. */ #include #include #include #include #include #include #include "wpactrl-internal.h" int wpactrl_start (wpactrl_t *a, char const *path, tain_t const *deadline, tain_t *stamp) { int fda, fds ; fds = ipc_datagram_nbcoe() ; if (fds < 0) goto err ; if (!ipc_timed_connect(fds, path, deadline, stamp)) goto errs ; fda = ipc_datagram_nbcoe() ; if (fda < 0) goto errs ; if (!ipc_timed_connect(fda, path, deadline, stamp)) goto erra ; if (!ipc_timed_send(fda, "ATTACH", 6, deadline, stamp)) goto erra ; { ssize_t r ; char answer[3] ; r = wpactrl_fd_timed_recv(fda, answer, 3, deadline, stamp) ; if (r != 3 || memcmp(answer, "OK\n", 3)) goto erra ; } a->fds = fds ; a->fda = fda ; return 1 ; erra: { int e = errno ; fd_close(fda) ; errno = e ; } errs: { int e = errno ; fd_close(fds) ; errno = e ; } err: return 0 ; }