Hi,

After updating to -current my gateway, I have a problem with dhcpcd.

I am sending the report to bugs@ because reverting changes in kernel solves the
problem. But it could be userland related too (even if it worked previously).

Nov 17 07:25:52 alf dhcpcd[49928]: if_learnaddrs: if_addrflags6: Invalid 
argument
Nov 17 07:25:52 alf last message repeated 6 times
Nov 17 07:25:52 alf dhcpcd[49928]: if_ifa: if_addrflags6: Invalid argument

jca@ pointed to me that sys/netinet6/in6.c has recently changed and that
 +       if (sa->sa_len != sizeof(struct sockaddr_in6))
 +               return EINVAL;
looks suspicious

I patched it out, and dhcpcd started working again.

The related code in dhcpcd should be:

dhcpcd-8.1.2/src/if-bsd.c
1034 int
1035 if_addrflags6(const struct interface *ifp, const struct in6_addr *addr,
1036     __unused const char *alias)
1037 {
1038         int flags;
1039         struct in6_ifreq ifr6;
1040         struct priv *priv;
1041
1042         memset(&ifr6, 0, sizeof(ifr6));
1043         strlcpy(ifr6.ifr_name, ifp->name, sizeof(ifr6.ifr_name));
1044         ifr6.ifr_addr.sin6_family = AF_INET6;
1045         ifr6.ifr_addr.sin6_addr = *addr;
1046         ifa_setscope(&ifr6.ifr_addr, ifp->index);
1047         priv = (struct priv *)ifp->ctx->priv;
1048         if (ioctl(priv->pf_inet6_fd, SIOCGIFAFLAG_IN6, &ifr6) != -1)
1049                 flags = ifr6.ifr_ifru.ifru_flags6;
1050         else
1051                 flags = -1;
1052         return flags;
1053 }

I am unsure if the problem is kernel related or in dhcpcd ...

Thanks.
-- 
Sebastien Marie

Reply via email to