summaryrefslogtreecommitdiffstats
path: root/src/privsep-control.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/privsep-control.c')
-rw-r--r--src/privsep-control.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/privsep-control.c b/src/privsep-control.c
index f5f8cfdd..389c5ad2 100644
--- a/src/privsep-control.c
+++ b/src/privsep-control.c
@@ -82,11 +82,12 @@ ps_ctl_recvmsgcb(void *arg, struct ps_msghdr *psm, __unused struct msghdr *msg)
}
static void
-ps_ctl_recvmsg(void *arg)
+ps_ctl_recvmsg(void *arg, unsigned short events)
{
struct dhcpcd_ctx *ctx = arg;
- if (ps_recvpsmsg(ctx, ctx->ps_control_fd, ps_ctl_recvmsgcb, ctx) == -1)
+ if (ps_recvpsmsg(ctx, ctx->ps_control_fd, events,
+ ps_ctl_recvmsgcb, ctx) == -1)
logerr(__func__);
}
@@ -161,21 +162,25 @@ ps_ctl_dispatch(void *arg, struct ps_msghdr *psm, struct msghdr *msg)
}
static void
-ps_ctl_dodispatch(void *arg)
+ps_ctl_dodispatch(void *arg, unsigned short events)
{
struct dhcpcd_ctx *ctx = arg;
- if (ps_recvpsmsg(ctx, ctx->ps_control_fd, ps_ctl_dispatch, ctx) == -1)
+ if (ps_recvpsmsg(ctx, ctx->ps_control_fd, events,
+ ps_ctl_dispatch, ctx) == -1)
logerr(__func__);
}
static void
-ps_ctl_recv(void *arg)
+ps_ctl_recv(void *arg, unsigned short events)
{
struct dhcpcd_ctx *ctx = arg;
char buf[BUFSIZ];
ssize_t len;
+ if (events != ELE_READ)
+ logerrx("%s: unexpected event 0x%04x", __func__, events);
+
errno = 0;
len = read(ctx->ps_control_data_fd, buf, sizeof(buf));
if (len == -1 || len == 0) {
@@ -191,13 +196,16 @@ ps_ctl_recv(void *arg)
}
static void
-ps_ctl_listen(void *arg)
+ps_ctl_listen(void *arg, unsigned short events)
{
struct dhcpcd_ctx *ctx = arg;
char buf[BUFSIZ];
ssize_t len;
struct fd_list *fd;
+ if (events != ELE_READ)
+ logerrx("%s: unexpected event 0x%04x", __func__, events);
+
errno = 0;
len = read(ctx->ps_control->fd, buf, sizeof(buf));
if (len == -1 || len == 0) {
@@ -250,7 +258,7 @@ ps_ctl_start(struct dhcpcd_ctx *ctx)
ctx->ps_control_data_fd = data_fd[0];
close(data_fd[1]);
- if (eloop_event_add(ctx->eloop, ctx->ps_control_data_fd,
+ if (eloop_event_add(ctx->eloop, ctx->ps_control_data_fd, ELE_READ,
ps_ctl_recv, ctx) == -1)
return -1;
@@ -259,7 +267,7 @@ ps_ctl_start(struct dhcpcd_ctx *ctx)
close(listen_fd[1]);
if (ctx->ps_control == NULL)
return -1;
- if (eloop_event_add(ctx->eloop, ctx->ps_control->fd,
+ if (eloop_event_add(ctx->eloop, ctx->ps_control->fd, ELE_READ,
ps_ctl_listen, ctx) == -1)
return -1;