On Thu, Jul 18, 2019 at 03:07:21PM +0200, Konrad Kręciwilk wrote: > Hello > > In practice AREA6 contains much more routes (about 150), I send a small > segment. The same router (R1) has other area NSSA - AREA61:
Hello Could you build BIRD 1.6.6 with attached patch (which adds some more log messages related to NSSA translation) and send me an output? -- 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."
diff --git a/proto/ospf/rt.c b/proto/ospf/rt.c index 368e3d05..7231dddb 100644 --- a/proto/ospf/rt.c +++ b/proto/ospf/rt.c @@ -1055,22 +1055,29 @@ decide_nssa_lsa(struct ospf_proto *p UNUSED4 UNUSED6, ort *nf, struct ospf_lsa_e if (!rt_is_nssa(nf) || !oa->translate) return 0; + log(L_INFO "NSSA 1"); /* Condensed area network found */ if (fib_route(&oa->enet_fib, nf->fn.prefix, nf->fn.pxlen)) return 0; + log(L_INFO "NSSA 2"); if (!en || (en->lsa_type != LSA_T_NSSA)) return 0; + log(L_INFO "NSSA 3"); /* We do not store needed data in struct orta, we have to parse the LSA */ lsa_parse_ext(en, ospf_is_v2(p), rt); + log(L_INFO "NSSA X %I %x %x", rt->fwaddr, (uint) rt->propagate, (uint) rt->pxopts); + if (rt->pxopts & OPT_PX_NU) return 0; + log(L_INFO "NSSA 4"); if (!rt->propagate || ipa_zero(rt->fwaddr)) return 0; + log(L_INFO "NSSA 5"); return 1; } @@ -1098,6 +1105,9 @@ check_nssa_lsa(struct ospf_proto *p, ort *nf) } } + if (rt_is_nssa(nf)) + log(L_INFO "NSSA net %I/%d %d", nf->fn.prefix, nf->fn.pxlen, nf->n.oa->translate); + /* RFC 3103 3.2 (3) - originate the aggregated address range */ if (anet && anet->active && !anet->hidden && oa->translate) ospf_originate_ext_lsa(p, NULL, nf, LSA_M_RTCALC, anet->metric,