Source-Changes-D archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: CVS commit: src/sys/netinet
On Fri, Apr 6, 2018 at 8:02 PM Roy Marples <roy%marples.name@localhost> wrote:
> On 06/04/2018 11:59, Ryota Ozaki wrote:
> > On Fri, Apr 6, 2018 at 7:45 PM, Ryota Ozaki <ozaki-r%netbsd.org@localhost> wrote:
> >> On Fri, Apr 6, 2018 at 7:04 PM, Roy Marples <roy%marples.name@localhost> wrote:
> >>> On 06/04/2018 10:19, Ryota Ozaki wrote:
> >>>>
> >>>> Module Name: src
> >>>> Committed By: ozaki-r
> >>>> Date: Fri Apr 6 09:19:16 UTC 2018
> >>>>
> >>>> Modified Files:
> >>>> src/sys/netinet: in.c
> >>>>
> >>>> Log Message:
> >>>> Simplify; clear then set flags to ia4_flags (NFCI)
> >>>
> >>>
> >>> This change is not right.
> >>> You are clearing the flags for an already existing address and now
allows
> >>> this:
> >>>
> >>> ifconfig bge0 1.2.3.4/16
> >>> address becomes tentative
> >>> ifconfig bge0 1.2.3.4/16
> >>> address flags cleared, address can be used before DaD finishes.
> >>>
> >>> Can we match it to the inet6 path and at least remember if existing
flags
> >>> were TENTATIVE | DETACHED? That is only done there because we can
update
> >>> flags from userland, we have no mechanism for this in inet hence the
slight
> >>> difference.
> >>>
> >>> I would also be happier with always setting DETACHED on link down,
but only
> >>> setting TENTATIVE if ip_dad_count > 0.
> >>> Would that help solve your issue with GARP? What is GARP anyway?
> >>
> >> Not enough. GARP wasn't sent because of the check in arpannounce:
> >>
> >> if (ia->ia4_flags & (IN_IFF_NOTREADY | IN_IFF_DETACHED)) {
> >> ARPLOG(LOG_DEBUG, "%s not ready\n", ARPLOGADDR(ip));
> >> return;
> >> }
> >> arprequest(ifp, ip, ip, enaddr);
> >>
> >> So my change was to not set any flags if !(ip_dad_count > 0).
> >> Do you have another idea to avoid the situation?
> >
> > Oh, I misread. Did you suggest a change like this?
> >
> > if (ifp->if_link_state == LINK_STATE_DOWN) {
> > ia->ia4_flags |= IN_IFF_DETACHED;
> > ia->ia4_flags &= ~IN_IFF_TENTATIVE;
> > - } else if (hostIsNew && if_do_dad(ifp))
> > + } else if (hostIsNew && if_do_dad(ifp) && ip_dad_count > 0)
> > ia->ia4_flags |= IN_IFF_TRYTENTATIVE;
> >
> > If so, it solves the issue.
> If that is against the code prior to your commits, then yes.
> Please make a similar change in sys/netinet6/in6.c so it's consistent
> there as well.
Thanks. I fixed as you suggested.
ozaki-r
Home |
Main Index |
Thread Index |
Old Index