Ondrej Zajicek <santiago@crfreenet.org> wrote on 2012/08/30 15:49:53:
On Thu, Aug 30, 2012 at 01:33:09PM +0200, Joakim Tjernlund wrote:
3) I thought that for some reasons the ifindex in 'data' value of link in router LSA is somehow important in link-back check or next-hop calculation when there are parallel links, but it seems to be completely useless - local router does not need it and neighboring routers can't map their links to links in local router LSA, because they don't know local ifindexes.
It is useless now but bird used ifindex earlier to find its interface and I think many impl. still does.
BTW, i think BIRD didn't used the ifindex value in the past. Before current implementation it tried all ptp ifaces that have neighbor with given router ID.
OK, it was guess. I didn't look too close. BTW, have you considered if there might be several next hops in calc_next_hop() for some interfaces(ptmp and broadcast)? I am looking at: struct ospf_neighbor *m = find_neigh(ifa, rid); if (!m || (m->state != NEIGHBOR_FULL)) return NULL; return new_nexthop(po, m->ip, ifa->iface, ifa->ecmp_weight); and /* * In this case, next-hop is the same as link-back, which is * already computed in link_back(). */ if (ipa_zero(en->lb)) goto bad; return new_nexthop(po, en->lb, pn->iface, pn->weight); Jocke