On Thu, Oct 03, 2019 at 03:28:45PM +0000, Kenth Eriksson wrote: > On Thu, 2019-10-03 at 16:46 +0200, Ondrej Zajicek wrote: > > CAUTION: This email originated from outside of the organization. Do not > > click links or open attachments unless you recognize the sender and know > > the content is safe. > > > > > > On Thu, Oct 03, 2019 at 01:49:23PM +0000, Kenth Eriksson wrote: > > > Hi! > > > > > > We are having a problem were sometimes bird ospf neighbor state machine > > > becomes stuck in a 2-way state. This happens when two broadcast > > > interfaces are connected, one of them is running quagga and the other > > > end is running bird. The quagga router has prio 0 and bird prio 5, i.e. > > > quagga is not eligible to become DR. > > > > > > Why does not bird transition from 2-way to ExStart? > > > > > > I believe the following lines causes me.dr to become 0.0.0.0. Bird adds > > > itself as an eligible router as described in section 10.4, but with the > > > address of zero? > > > > > > me.dr = ospf_is_v2(p) ? ipa_to_u32(ifa->drip) : ifa->drid; > > > me.bdr = ospf_is_v2(p) ? ipa_to_u32(ifa->bdrip) : ifa->bdrid; > > > > Hi > > > > I do not get why do you think that it is added with the address of zero. > > There is a line above specifying local address is used: > > > > me.ip = ifa->addr->ip; > > > me.dr is 0 because ifa->drip is 0, but should it have declared itself > as an eligible DR?
Oh, you meant DR IP, not neghbor IP. I think that it is correct - the process should start with the node idea of DR IP, which is initially zero (RFC 2328 9.4. the first paragraph). It should also be fixed by the second election: /* 9.4. (4) */ if (((ifa->drid == myid) && (ndr != &me)) || ((ifa->drid != myid) && (ndr == &me)) || ((ifa->bdrid == myid) && (nbdr != &me)) || ((ifa->bdrid != myid) && (nbdr == &me))) { me.dr = ndr ? neigh_get_id(p, ndr) : 0; me.bdr = nbdr ? neigh_get_id(p, nbdr) : 0; nbdr = elect_bdr(p, ifa->neigh_list); ndr = elect_dr(p, ifa->neigh_list); if (ndr == NULL) ndr = nbdr; } -- Elen sila lumenn' omentielvo Ondrej 'Santiago' Zajicek (email: santi...@crfreenet.org) OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net) "To err is human -- to blame it on a computer is even more so."