Interface Instance IDs in OSPFv3

Benjamin Paterson paterson.b at gmail.com
Thu May 10 10:15:58 CEST 2012


Great, that definitely makes more sense then :)

I'm still wondering, shouldn't this block:
if (ip->instance_id == 0)
                done0++;
              iid = ip->instance_id + 1;

instead read:
if (iid == 0)
                done0++;
              iid = ip->instance_id + 1;

Otherwise the condition done0>1 will only be triggered if the same
interface is in multiple areas with instance ID 0. I think we want the
condition to be triggered if the same interface is in multiple areas,
whatever the instance ID?

On 10 May 2012 02:28, Ondrej Zajicek <santiago at crfreenet.org> wrote:

> On Wed, May 09, 2012 at 06:18:19PM +0200, Benjamin Paterson wrote:
> >    I am intrigued by the following bit of code in BIRD 1.3.7
> >    proto/ospf/iface.c
> >    void
> >    ospf_ifa_notify(struct proto *p, unsigned flags, struct ifa *a)
> >    {
> >    [...]
> >    if (flags & IF_CHANGE_UP)
> >        {
> >          int done0 = 0;
> >          struct ospf_area *oa;
> >          WALK_LIST(oa, po->area_list)
> >          {
> >            int iid = 0;
> >            struct ospf_iface_patt *ip;
> >            while (ip = ospf_iface_patt_find(oa->ac, a->iface, iid))
> >            {
> >              ospf_iface_new(oa, a, ip);
> >              if (ip->instance_id == 0)
> >                done0++;
> >              iid = ip->instance_id + 1;
> >            }
> >          }
> >    I might be wrong here, but if I understand correctly, the code
> expects the
> >    set of instance IDs configured on each interface to be of the form [|
> 0, n
> >    |].
>
> No, ospf_iface_patt_find() returns the first configured iface pattern
> with lowest instance id which is greater or equal to iid argument, so
> it would iterate through all relevant iface patterns and initialize
> them. If you have just one relevant pattern with iid 5, the first call
> would return that and second one (called with iid 6) would return NULL.
>
> >    In addition, I haven't seen any option to manually set Instance IDs.
>
> Oops, it seems that i forgot to add this option, probably in dilemma
> whether it should be syntactically a regular option or some part of an
> iface pattern key (as it is semantically a part of the key). I will fix
> that.
>
> --
> Elen sila lumenn' omentielvo
>
> Ondrej 'SanTiago' Zajicek (email: santiago at 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."
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.9 (GNU/Linux)
>
> iEUEARECAAYFAk+rC8QACgkQw1GB2RHercN5KQCdHpTRh8bdgUHhQ2k30GpJn4li
> 4BQAmILLroqL6+qUsIVf2hXxMqzodRQ=
> =zSdI
> -----END PGP SIGNATURE-----
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://trubka.network.cz/pipermail/bird-users/attachments/20120510/f7d03941/attachment-0001.html>


More information about the Bird-users mailing list