mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-15 02:43:41 +00:00
ospf6d: missing NSSA areas handling
Patch provided by Soman K.S. with small alterations. Signed-off-by: Soman K.S <somanks@gmail.com> Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
This commit is contained in:
parent
fb00683a11
commit
4f785c075e
@ -177,6 +177,8 @@ int ospf6_orig_as_external_lsa(struct thread *thread)
|
|||||||
|
|
||||||
if (oi->state == OSPF6_INTERFACE_DOWN)
|
if (oi->state == OSPF6_INTERFACE_DOWN)
|
||||||
return 0;
|
return 0;
|
||||||
|
if (IS_AREA_NSSA(oi->area))
|
||||||
|
return 0;
|
||||||
|
|
||||||
type = htons(OSPF6_LSTYPE_AS_EXTERNAL);
|
type = htons(OSPF6_LSTYPE_AS_EXTERNAL);
|
||||||
adv_router = oi->area->ospf6->router_id;
|
adv_router = oi->area->ospf6->router_id;
|
||||||
|
@ -530,7 +530,8 @@ static void ospf6_dbdesc_recv_master(struct ospf6_header *oh,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ntohs(his->header->type) == OSPF6_LSTYPE_AS_EXTERNAL
|
if (ntohs(his->header->type) == OSPF6_LSTYPE_AS_EXTERNAL
|
||||||
&& IS_AREA_STUB(on->ospf6_if->area)) {
|
&& (IS_AREA_STUB(on->ospf6_if->area)
|
||||||
|
|| IS_AREA_NSSA(on->ospf6_if->area))) {
|
||||||
if (IS_OSPF6_DEBUG_MESSAGE(oh->type, RECV))
|
if (IS_OSPF6_DEBUG_MESSAGE(oh->type, RECV))
|
||||||
zlog_debug(
|
zlog_debug(
|
||||||
"SeqNumMismatch (E-bit mismatch), discard");
|
"SeqNumMismatch (E-bit mismatch), discard");
|
||||||
@ -750,7 +751,8 @@ static void ospf6_dbdesc_recv_slave(struct ospf6_header *oh,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (OSPF6_LSA_SCOPE(his->header->type) == OSPF6_SCOPE_AS
|
if (OSPF6_LSA_SCOPE(his->header->type) == OSPF6_SCOPE_AS
|
||||||
&& IS_AREA_STUB(on->ospf6_if->area)) {
|
&& (IS_AREA_STUB(on->ospf6_if->area)
|
||||||
|
|| IS_AREA_NSSA(on->ospf6_if->area))) {
|
||||||
if (IS_OSPF6_DEBUG_MESSAGE(oh->type, RECV))
|
if (IS_OSPF6_DEBUG_MESSAGE(oh->type, RECV))
|
||||||
zlog_debug("E-bit mismatch with LSA Headers");
|
zlog_debug("E-bit mismatch with LSA Headers");
|
||||||
ospf6_lsa_delete(his);
|
ospf6_lsa_delete(his);
|
||||||
@ -1927,7 +1929,8 @@ int ospf6_dbdesc_send_newone(struct thread *thread)
|
|||||||
size = sizeof(struct ospf6_lsa_header) + sizeof(struct ospf6_dbdesc);
|
size = sizeof(struct ospf6_lsa_header) + sizeof(struct ospf6_dbdesc);
|
||||||
for (ALL_LSDB(on->summary_list, lsa, lsanext)) {
|
for (ALL_LSDB(on->summary_list, lsa, lsanext)) {
|
||||||
/* if stub area then don't advertise AS-External LSAs */
|
/* if stub area then don't advertise AS-External LSAs */
|
||||||
if (IS_AREA_STUB(on->ospf6_if->area)
|
if ((IS_AREA_STUB(on->ospf6_if->area)
|
||||||
|
|| IS_AREA_NSSA(on->ospf6_if->area))
|
||||||
&& ntohs(lsa->header->type) == OSPF6_LSTYPE_AS_EXTERNAL) {
|
&& ntohs(lsa->header->type) == OSPF6_LSTYPE_AS_EXTERNAL) {
|
||||||
ospf6_lsdb_remove(lsa, on->summary_list);
|
ospf6_lsdb_remove(lsa, on->summary_list);
|
||||||
continue;
|
continue;
|
||||||
|
Loading…
Reference in New Issue
Block a user