mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-14 10:37:29 +00:00
ospf6d: assorted code cleanup
This commits consists of several changes that positively impact code reability without introducing any logical change. Summary of the changes: * Return earlier in ospf6_abr_range_update() in order to reduce one level of indentation; * Remove ospf6_translated_nssa_originate() since it's nothing other than a useless wrapper around ospf6_lsa_translated_nssa_new(); * Change ospf6_abr_translate_nssa() to return void; * Change ospf6_abr_process_nssa_translates() checking for NSSA areas before anything else; * Remove ospf6_abr_remove_unapproved_translates_apply() since it's a small function that is only called in one place; * Change ospf6_abr_check_translate_nssa() to avoid an LSDB lookup when the router isn't an ABR. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
This commit is contained in:
parent
7270e0edf3
commit
8ee9d58b0d
@ -681,19 +681,18 @@ void ospf6_abr_range_update(struct ospf6_route *range, struct ospf6 *ospf6)
|
||||
* if there
|
||||
* were active ranges.
|
||||
*/
|
||||
if (!ospf6_abr_range_summary_needs_update(range, cost))
|
||||
return;
|
||||
|
||||
if (ospf6_abr_range_summary_needs_update(range, cost)) {
|
||||
if (IS_OSPF6_DEBUG_ABR)
|
||||
zlog_debug("%s: range %pFX update", __func__,
|
||||
&range->prefix);
|
||||
zlog_debug("%s: range %pFX update", __func__, &range->prefix);
|
||||
|
||||
for (ALL_LIST_ELEMENTS(ospf6->area_list, node, nnode, oa))
|
||||
summary_orig +=
|
||||
ospf6_abr_originate_summary_to_area(range, oa);
|
||||
summary_orig += ospf6_abr_originate_summary_to_area(range, oa);
|
||||
|
||||
if (CHECK_FLAG(range->flag, OSPF6_ROUTE_ACTIVE_SUMMARY)
|
||||
&& summary_orig) {
|
||||
if (!CHECK_FLAG(range->flag,
|
||||
OSPF6_ROUTE_BLACKHOLE_ADDED)) {
|
||||
if (!CHECK_FLAG(range->flag, OSPF6_ROUTE_BLACKHOLE_ADDED)) {
|
||||
if (IS_OSPF6_DEBUG_ABR)
|
||||
zlog_debug("Add discard route");
|
||||
|
||||
@ -702,8 +701,7 @@ void ospf6_abr_range_update(struct ospf6_route *range, struct ospf6 *ospf6)
|
||||
} else {
|
||||
/* Summary removed or no summary generated as no
|
||||
* specifics exist */
|
||||
if (CHECK_FLAG(range->flag,
|
||||
OSPF6_ROUTE_BLACKHOLE_ADDED)) {
|
||||
if (CHECK_FLAG(range->flag, OSPF6_ROUTE_BLACKHOLE_ADDED)) {
|
||||
if (IS_OSPF6_DEBUG_ABR)
|
||||
zlog_debug("Delete discard route");
|
||||
|
||||
@ -711,7 +709,6 @@ void ospf6_abr_range_update(struct ospf6_route *range, struct ospf6 *ospf6)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ospf6_abr_originate_summary(struct ospf6_route *route, struct ospf6 *ospf6)
|
||||
{
|
||||
|
@ -596,27 +596,7 @@ struct ospf6_lsa *ospf6_translated_nssa_refresh(struct ospf6_area *area,
|
||||
return new;
|
||||
}
|
||||
|
||||
/* Originate Translated Type-5 for supplied Type-7 NSSA LSA */
|
||||
struct ospf6_lsa *ospf6_translated_nssa_originate(struct ospf6_area *oa,
|
||||
struct ospf6_lsa *type7)
|
||||
{
|
||||
struct ospf6_lsa *new;
|
||||
|
||||
if (ntohs(type7->header->type) != OSPF6_LSTYPE_TYPE_7)
|
||||
return NULL;
|
||||
|
||||
if ((new = ospf6_lsa_translated_nssa_new(oa, type7)) == NULL) {
|
||||
if (IS_OSPF6_DEBUG_NSSA)
|
||||
zlog_debug(
|
||||
"%s : Could not translate Type-7, Id %pI4, to Type-5",
|
||||
__func__, &type7->header->id);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return new;
|
||||
}
|
||||
|
||||
int ospf6_abr_translate_nssa(struct ospf6_area *area, struct ospf6_lsa *lsa)
|
||||
static void ospf6_abr_translate_nssa(struct ospf6_area *area, struct ospf6_lsa *lsa)
|
||||
{
|
||||
/* Incoming Type-7 or later aggregated Type-7
|
||||
*
|
||||
@ -645,7 +625,7 @@ int ospf6_abr_translate_nssa(struct ospf6_area *area, struct ospf6_lsa *lsa)
|
||||
zlog_debug(
|
||||
"%s : LSA Id %pI4, P-bit off, NO Translation",
|
||||
__func__, &lsa->header->id);
|
||||
return 1;
|
||||
return;
|
||||
}
|
||||
|
||||
if (IS_OSPF6_DEBUG_NSSA)
|
||||
@ -662,7 +642,7 @@ int ospf6_abr_translate_nssa(struct ospf6_area *area, struct ospf6_lsa *lsa)
|
||||
zlog_debug(
|
||||
"%s : LSA Id %pI4, Forward address is 0, NO Translation",
|
||||
__func__, &lsa->header->id);
|
||||
return 1;
|
||||
return;
|
||||
}
|
||||
|
||||
/* Find the existing AS-External LSA for this prefix */
|
||||
@ -705,16 +685,14 @@ int ospf6_abr_translate_nssa(struct ospf6_area *area, struct ospf6_lsa *lsa)
|
||||
* originate translated LSA
|
||||
*/
|
||||
|
||||
if (ospf6_translated_nssa_originate(area, lsa) == NULL) {
|
||||
if (ospf6_lsa_translated_nssa_new(area, lsa) == NULL) {
|
||||
if (IS_OSPF6_DEBUG_NSSA)
|
||||
zlog_debug(
|
||||
"%s : Could not translate Type-7 for %pI4 to Type-5",
|
||||
__func__, &lsa->header->id);
|
||||
return 1;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void ospf6_abr_process_nssa_translates(struct ospf6 *ospf6)
|
||||
@ -734,6 +712,8 @@ static void ospf6_abr_process_nssa_translates(struct ospf6 *ospf6)
|
||||
zlog_debug("%s : Start", __func__);
|
||||
|
||||
for (ALL_LIST_ELEMENTS_RO(ospf6->area_list, node, oa)) {
|
||||
if (!IS_AREA_NSSA(oa))
|
||||
continue;
|
||||
|
||||
/* skip if not translator */
|
||||
if (oa->NSSATranslatorState == OSPF6_NSSA_TRANSLATE_DISABLED) {
|
||||
@ -743,13 +723,6 @@ static void ospf6_abr_process_nssa_translates(struct ospf6 *ospf6)
|
||||
continue;
|
||||
}
|
||||
|
||||
/* skip if not Nssa Area */
|
||||
if (!IS_AREA_NSSA(oa)) {
|
||||
zlog_debug("%s area %pI4 Flag %x", __func__,
|
||||
&oa->area_id, oa->flag);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (IS_OSPF6_DEBUG_NSSA)
|
||||
zlog_debug("%s : looking at area %pI4", __func__,
|
||||
&oa->area_id);
|
||||
@ -767,20 +740,6 @@ static void ospf6_abr_process_nssa_translates(struct ospf6 *ospf6)
|
||||
zlog_debug("%s : Stop", __func__);
|
||||
}
|
||||
|
||||
/*Flood max age LSA's for the unapproved LSA's */
|
||||
static int ospf6_abr_remove_unapproved_translates_apply(struct ospf6_lsa *lsa)
|
||||
{
|
||||
if (CHECK_FLAG(lsa->flag, OSPF6_LSA_LOCAL_XLT)
|
||||
&& CHECK_FLAG(lsa->flag, OSPF6_LSA_UNAPPROVED)) {
|
||||
zlog_debug("%s : removing unapproved translates, lsa : %s",
|
||||
__func__, lsa->name);
|
||||
|
||||
/* FLUSH THROUGHOUT AS */
|
||||
ospf6_lsa_premature_aging(lsa);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void ospf6_abr_remove_unapproved_translates(struct ospf6 *ospf6)
|
||||
{
|
||||
struct ospf6_lsa *lsa;
|
||||
@ -792,8 +751,16 @@ static void ospf6_abr_remove_unapproved_translates(struct ospf6 *ospf6)
|
||||
zlog_debug("ospf6_abr_remove_unapproved_translates(): Start");
|
||||
|
||||
type = htons(OSPF6_LSTYPE_AS_EXTERNAL);
|
||||
for (ALL_LSDB_TYPED(ospf6->lsdb, type, lsa))
|
||||
ospf6_abr_remove_unapproved_translates_apply(lsa);
|
||||
for (ALL_LSDB_TYPED(ospf6->lsdb, type, lsa)) {
|
||||
if (CHECK_FLAG(lsa->flag, OSPF6_LSA_LOCAL_XLT)
|
||||
&& CHECK_FLAG(lsa->flag, OSPF6_LSA_UNAPPROVED)) {
|
||||
zlog_debug(
|
||||
"%s : removing unapproved translates, lsa : %s",
|
||||
__func__, lsa->name);
|
||||
|
||||
ospf6_lsa_premature_aging(lsa);
|
||||
}
|
||||
}
|
||||
|
||||
if (IS_OSPF6_DEBUG_NSSA)
|
||||
zlog_debug("ospf_abr_remove_unapproved_translates(): Stop");
|
||||
@ -1268,11 +1235,13 @@ void ospf6_abr_check_translate_nssa(struct ospf6_area *area,
|
||||
if (IS_OSPF6_DEBUG_NSSA)
|
||||
zlog_debug("%s : start", __func__);
|
||||
|
||||
if (!ospf6_check_and_set_router_abr(ospf6))
|
||||
return;
|
||||
|
||||
type5 = ospf6_lsdb_lookup(htons(OSPF6_LSTYPE_AS_EXTERNAL),
|
||||
lsa->external_lsa_id, ospf6->router_id,
|
||||
ospf6->lsdb);
|
||||
|
||||
if (ospf6_check_and_set_router_abr(ospf6) && (type5 == NULL)) {
|
||||
if (!type5) {
|
||||
if (IS_OSPF6_DEBUG_NSSA)
|
||||
zlog_debug("%s : Originating type5 LSA", __func__);
|
||||
ospf6_lsa_translated_nssa_new(area, lsa);
|
||||
|
@ -55,8 +55,6 @@ extern void ospf6_nssa_lsa_flush(struct ospf6 *ospf6, struct prefix_ipv6 *p);
|
||||
extern struct ospf6_lsa *ospf6_translated_nssa_refresh(struct ospf6_area *oa,
|
||||
struct ospf6_lsa *type7,
|
||||
struct ospf6_lsa *type5);
|
||||
extern struct ospf6_lsa *
|
||||
ospf6_translated_nssa_originate(struct ospf6_area *oa, struct ospf6_lsa *type7);
|
||||
|
||||
extern void ospf6_asbr_nssa_redist_task(struct ospf6 *ospf6);
|
||||
|
||||
@ -69,8 +67,6 @@ extern void install_element_ospf6_debug_nssa(void);
|
||||
extern void ospf6_abr_nssa_type_7_defaults(struct ospf6 *osof6);
|
||||
int ospf6_redistribute_check(struct ospf6 *ospf6, struct ospf6_route *route,
|
||||
int type);
|
||||
extern int ospf6_abr_translate_nssa(struct ospf6_area *area,
|
||||
struct ospf6_lsa *lsa);
|
||||
extern void ospf6_abr_check_translate_nssa(struct ospf6_area *area,
|
||||
struct ospf6_lsa *lsa);
|
||||
extern void ospf6_abr_nssa_check_status(struct ospf6 *ospf6);
|
||||
|
Loading…
Reference in New Issue
Block a user