From 633445be1a9be37ae727c044417f5607706cf4ae Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Tue, 26 Jun 2018 00:25:28 +0000 Subject: Initial commit --- src/libnsss/nsss_switch_start.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 src/libnsss/nsss_switch_start.c (limited to 'src/libnsss/nsss_switch_start.c') diff --git a/src/libnsss/nsss_switch_start.c b/src/libnsss/nsss_switch_start.c new file mode 100644 index 0000000..5d7a183 --- /dev/null +++ b/src/libnsss/nsss_switch_start.c @@ -0,0 +1,26 @@ +/* ISC license. */ + +#include +#include +#include +#include + +static inline int nsss_switch_connect (nsss_switch_t *a, char const *path, tain_t const *deadline, tain_t *stamp) +{ + int fd = ipc_stream_nbcoe() ; + if (fd < 0) return 0 ; + if (!ipc_timed_connect(fd, path, deadline, stamp)) + { + fd_close(fd) ; + return 0 ; + } + buffer_init(&a->b, &buffer_read, fd, a->buf, NSSS_SWITCH_BUFSIZE) ; + return 1 ; +} + +int nsss_switch_start (nsss_switch_t *a, unsigned int what, char const *path, tain_t const *deadline, tain_t *stamp) +{ + if (!a->held && !nsss_switch_connect(a, path, deadline, stamp)) return 0 ; + a->held |= (1U << what) ; + return 1 ; +} -- cgit v1.3.1