I was being annoyed by this bug today. It doesn’t happen often but I suspect 
when patching the ppp daemon or ISP changes the ppp interface gets a new ID.

strace -p 294339
strace: Process 294339 attached
select(7, [4 6], NULL, NULL, {tv_sec=92, tv_usec=146932}) = 0 (Timeout)
sendto(4, “XXXXXXXXX"..., 48, 0, {sa_family=AF_INET6, sin6_port=htons(547), 
sin6_flowinfo=htonl(0), inet_pton(AF_INET6, "ff02::1:2", &sin6_addr), 
sin6_scope_id=13}, 28) = -1 ENETUNREACH (Network is unreachable)
getpid()                                = 294339
sendto(3, "<27>Jun 13 16:15:53 dhcp6c[29433"..., 89, MSG_NOSIGNAL, NULL, 0) = 89
select(7, [4 6], NULL, NULL, {tv_sec=117, tv_usec=240413}^Cstrace: Process 
294339 detached
 <detached …>


I’m not 100% sure but if the sin6_scope_id=13 matched the same ID returned by 
"ip a” it has definitely changed.

My current thought is when the error occurs to assume a linked problem and try 
an ifreset(ifp) then retry the block: 

        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,
                    "transmit failed: %s", strerror(errno));
                goto end;
        }


My first task is to try and reproduce when the family won’t notice. Play for 
this weekend maybe.

Reply via email to