I’ve been running with the patch to dhcp6c.c for a while 

1378,1381d1377
<               /*
<                * failed send. Possible change of interface id per Bug#1035395
<                * Try reseting and resend
<                */
1384,1398d1379
<               if (ifreset(ifp)) {
<                       debug_printf(LOG_ERR, FNAME,
<                               "reset failed: %s", strerror(errno));
<               } else {
<                       dst.sin6_scope_id = ifp->linkid;
<       
<                       if (sendto(sock, buf, len, 0, (struct sockaddr *)&dst,
<                               sysdep_sa_len((struct sockaddr *)&dst)) == -1) {
<                               debug_printf(LOG_ERR, FNAME,
<                                       "retransmit failed: %s", 
strerror(errno));
<                       } else {
<                                       debug_printf(LOG_DEBUG, FNAME, "resend 
%s to %s",
<                                               dhcp6msgstr(dh6->dh6_msgtype), 
addr2str((struct sockaddr *)&dst));
<                       }                       
<               }


I’m still not sure if this is over thinking the solution. It is tempting to 
just run the ifreset(ifs) before every send.

Behaviour is pretty good when the interface is down. The ifreset fails and the 
slow retry loop fixes it up next time.
dhcp6c[1844536]: client6_send: transmit failed: Network is unreachable
dhcp6c[1844536]: ifreset: invalid interface(ppp0): No such device
dhcp6c[1844536]: client6_send: reset failed: No such device


Reply via email to