ospf6d: don't suppress empty router LSA

Currently in OSPFv3 implementation, if all the interfaces are down/loopback
or are without any full adjacencies, the router LSA is suppressed. So for
a router with only stub networks, no router LSA is generated. However,
intra-prefix LSAs are generated for the stub networks and these intra-prefix
LSAs will reference the router LSA. So the router LSA really should not be
suppressed. It needs to be generated to be the starting vertex for SPF
w.r.t the stub networks.

Signed-off-by: James Li <jli at cumulusnetworks.com>
Reviewed-by: Dinesh G Dutt <ddutt at cumulusnetworks.com>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
This commit is contained in:
Dinesh Dutt 2013-08-24 07:55:43 +00:00 committed by David Lamparter
parent e39d05384d
commit 17d003da96

View File

@ -272,35 +272,26 @@ ospf6_router_lsa_originate (struct thread *thread)
/* xxx */
}
if ((caddr_t) lsdesc != (caddr_t) router_lsa +
sizeof (struct ospf6_router_lsa))
{
/* Fill LSA Header */
lsa_header->age = 0;
lsa_header->type = htons (OSPF6_LSTYPE_ROUTER);
lsa_header->id = htonl (link_state_id);
lsa_header->adv_router = oa->ospf6->router_id;
lsa_header->seqnum =
ospf6_new_ls_seqnum (lsa_header->type, lsa_header->id,
lsa_header->adv_router, oa->lsdb);
lsa_header->length = htons ((caddr_t) lsdesc - (caddr_t) buffer);
/* Fill LSA Header */
lsa_header->age = 0;
lsa_header->type = htons (OSPF6_LSTYPE_ROUTER);
lsa_header->id = htonl (link_state_id);
lsa_header->adv_router = oa->ospf6->router_id;
lsa_header->seqnum =
ospf6_new_ls_seqnum (lsa_header->type, lsa_header->id,
lsa_header->adv_router, oa->lsdb);
lsa_header->length = htons ((caddr_t) lsdesc - (caddr_t) buffer);
/* LSA checksum */
ospf6_lsa_checksum (lsa_header);
/* LSA checksum */
ospf6_lsa_checksum (lsa_header);
/* create LSA */
lsa = ospf6_lsa_create (lsa_header);
/* create LSA */
lsa = ospf6_lsa_create (lsa_header);
/* Originate */
ospf6_lsa_originate_area (lsa, oa);
/* Originate */
ospf6_lsa_originate_area (lsa, oa);
link_state_id ++;
}
else
{
if (IS_OSPF6_DEBUG_ORIGINATE (ROUTER))
zlog_debug ("Nothing to describe in Router-LSA, suppress");
}
link_state_id ++;
/* Do premature-aging of rest, undesired Router-LSAs */
type = ntohs (OSPF6_LSTYPE_ROUTER);