From ae8cd3160ca43ea50f5fe3568ad6f7f045f86ab5 Mon Sep 17 00:00:00 2001 From: Roy Marples Date: Fri, 16 Sep 2016 16:03:00 +0000 Subject: [PATCH] Fix compile on OpenBSD. --- if-bsd.c | 8 ++++---- ipv6.c | 20 ++++++++++++++++---- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/if-bsd.c b/if-bsd.c index d197db53..c1344a07 100644 --- a/if-bsd.c +++ b/if-bsd.c @@ -737,7 +737,7 @@ if_route(unsigned char cmd, const struct rt *rt) #endif addrs = 0; - flags = 0; + flags = (int)rt->flags; if (cmd == RTM_ADD || cmd == RTM_CHANGE) { addrs |= RTA_GATEWAY | RTA_IFP; @@ -1490,7 +1490,7 @@ if_ifa(struct dhcpcd_ctx *ctx, const struct ifa_msghdr *ifam) { if (ifam->ifam_type != RTM_DELADDR || errno != EEXIST) logger(ctx, LOG_ERR, - "%s: if_addrflags1: %s: %m", + "%s: if_addrflags: %s: %m", ifp->name, inet_ntoa(addr)); addrflags = 0; } @@ -1520,8 +1520,8 @@ if_ifa(struct dhcpcd_ctx *ctx, const struct ifa_msghdr *ifam) { if (ifam->ifam_type != RTM_DELADDR || errno != EEXIST) logger(ctx, LOG_ERR, - "%s: if_addrflags1: %s: %m", - ifp->name, inet_ntoa(addr)); + "%s: if_addrflags: %m", + ifp->name); addrflags = 0; } #endif diff --git a/ipv6.c b/ipv6.c index a49cffd0..9cdc2e91 100644 --- a/ipv6.c +++ b/ipv6.c @@ -567,20 +567,25 @@ ipv6_checkaddrflags(void *arg) { struct ipv6_addr *ia; int flags; + const char *alias; ia = arg; - if ((flags = if_addrflags6(ia)) == -1) { +#ifdef ALIAS_ADDR + alias = ia->alias; +#else + alias = NULL; +#endif + if ((flags = if_addrflags6(ia->iface, &ia->addr, alias)) == -1) { logger(ia->iface->ctx, LOG_ERR, "%s: if_addrflags6: %m", ia->iface->name); return; } - ia->addr_flags = flags; if (!(ia->addr_flags & IN6_IFF_TENTATIVE)) { /* Simulate the kernel announcing the new address. */ ipv6_handleifa(ia->iface->ctx, RTM_NEWADDR, ia->iface->ctx->ifaces, ia->iface->name, - &ia->addr, ia->prefix_len); + &ia->addr, ia->prefix_len, flags); } else { /* Still tentative? Check again in a bit. */ struct timespec tv; @@ -1608,10 +1613,17 @@ ipv6_start(struct interface *ifp) /* We need to update the address flags. */ if ((state = IPV6_STATE(ifp)) != NULL) { struct ipv6_addr *ia; + const char *alias; int flags; TAILQ_FOREACH(ia, &state->addrs, next) { - if ((flags = if_addrflags6(ia)) != -1) +#ifdef ALIAS_ADDR + alias = ia->alias; +#else + alias = NULL; +#endif + flags = if_addrflags6(ia->iface, &ia->addr, alias); + if (flags != -1) ia->addr_flags = flags; } } -- 2.47.2