From: Roy Marples Date: Fri, 25 Oct 2019 14:15:22 +0000 (+0100) Subject: DHCP6: Simplify opening the UDP port for all interfaces. X-Git-Tag: v8.1.2~31 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=388418371d1932e1abf35bb718c95a520042087d;p=thirdparty%2Fdhcpcd.git DHCP6: Simplify opening the UDP port for all interfaces. --- diff --git a/src/dhcp6.c b/src/dhcp6.c index 98d506bb..c2d15bbf 100644 --- a/src/dhcp6.c +++ b/src/dhcp6.c @@ -3686,6 +3686,18 @@ dhcp6_activateinterfaces(struct interface *ifp) } #endif +static int +dhcp6_open(struct dhcpcd_ctx *ctx) +{ + + if (ctx->dhcp6_fd != -1 || + (ctx->dhcp6_fd = dhcp6_listen(ctx, NULL)) == -1) + return ctx->dhcp6_fd; + + eloop_event_add(ctx->eloop, ctx->dhcp6_fd, dhcp6_recvctx, ctx); + return ctx->dhcp6_fd; +} + static void dhcp6_start1(void *arg) { @@ -3696,11 +3708,9 @@ dhcp6_start1(void *arg) size_t i; const struct dhcp_compat *dhc; - if (ctx->dhcp6_fd == -1 && ctx->options & DHCPCD_MASTER) { - ctx->dhcp6_fd = dhcp6_listen(ctx, NULL); - if (ctx->dhcp6_fd == -1) + if (ctx->options & DHCPCD_MASTER) { + if (dhcp6_open(ctx) == -1) return; - eloop_event_add(ctx->eloop, ctx->dhcp6_fd, dhcp6_recvctx, ctx); } state = D6_STATE(ifp);