{
struct interface *ifp;
int link_state;
-#ifdef IPV6_POLLADDRFLAG
- struct ipv6_state *state;
- struct ipv6_addr *ia;
- int flags;
-#endif
if ((ifp = if_findindex(ctx->ifaces, ifm->ifm_index)) == NULL)
return;
case LINK_STATE_UP:
/* dhcpcd considers the link down if IFF_UP is not set. */
link_state = ifm->ifm_flags & IFF_UP ? LINK_UP : LINK_DOWN;
-
-#ifdef IPV6_POLLADDRFLAG
- /* We need to update the address flags incase they were
- * marked tentative on down. */
- state = IPV6_STATE(ifp);
- TAILQ_FOREACH(ia, &state->addrs, next) {
- if ((flags = if_addrflags6(ia)) != -1)
- ia->addr_flags = flags;
- }
-#endif
break;
default:
/* handle_carrier will re-load the interface flags and check for
int
ipv6_start(struct interface *ifp)
{
+#ifdef IPV6_POLLADDRFLAG
+ struct ipv6_state *state;
+
+ /* We need to update the address flags. */
+ if ((state = IPV6_STATE(ifp)) != NULL) {
+ struct ipv6_addr *ia;
+ int flags;
+
+ TAILQ_FOREACH(ia, &state->addrs, next) {
+ if ((flags = if_addrflags6(ia)) != -1)
+ ia->addr_flags = flags;
+ }
+ }
+#endif
if (ipv6_tryaddlinklocal(ifp) == -1)
return -1;