summaryrefslogtreecommitdiff
path: root/ospf6d/ospf6_abr.c
diff options
context:
space:
mode:
Diffstat (limited to 'ospf6d/ospf6_abr.c')
-rw-r--r--ospf6d/ospf6_abr.c27
1 files changed, 25 insertions, 2 deletions
diff --git a/ospf6d/ospf6_abr.c b/ospf6d/ospf6_abr.c
index 27d4f0755e..286e642781 100644
--- a/ospf6d/ospf6_abr.c
+++ b/ospf6d/ospf6_abr.c
@@ -389,6 +389,8 @@ int ospf6_abr_originate_summary_to_area(struct ospf6_route *route,
zlog_debug(
"prefix %pFX was denied by export list",
&route->prefix);
+ ospf6_abr_delete_route(route, summary,
+ summary_table, old);
return 0;
}
}
@@ -401,6 +403,9 @@ int ospf6_abr_originate_summary_to_area(struct ospf6_route *route,
zlog_debug(
"prefix %pFX was denied by filter-list out",
&route->prefix);
+ ospf6_abr_delete_route(route, summary, summary_table,
+ old);
+
return 0;
}
@@ -1075,7 +1080,8 @@ void ospf6_abr_examin_summary(struct ospf6_lsa *lsa, struct ospf6_area *oa)
== FILTER_DENY) {
if (is_debug)
zlog_debug(
- "Prefix was denied by import-list");
+ "Prefix %pFX was denied by import-list",
+ &prefix);
if (old)
ospf6_route_remove(old, table);
return;
@@ -1087,7 +1093,9 @@ void ospf6_abr_examin_summary(struct ospf6_lsa *lsa, struct ospf6_area *oa)
if (prefix_list_apply(PREFIX_LIST_IN(oa), &prefix)
!= PREFIX_PERMIT) {
if (is_debug)
- zlog_debug("Prefix was denied by prefix-list");
+ zlog_debug(
+ "Prefix %pFX was denied by prefix-list in",
+ &prefix);
if (old)
ospf6_route_remove(old, table);
return;
@@ -1287,6 +1295,21 @@ void ospf6_abr_reimport(struct ospf6_area *oa)
ospf6_abr_examin_summary(lsa, oa);
}
+/* export filter removed so determine if we should reoriginate summary LSAs */
+void ospf6_abr_reexport(struct ospf6_area *oa)
+{
+ struct ospf6_route *route;
+
+ /* if not a ABR return success */
+ if (!ospf6_is_router_abr(oa->ospf6))
+ return;
+
+ /* Redo summaries if required */
+ for (route = ospf6_route_head(oa->ospf6->route_table); route;
+ route = ospf6_route_next(route))
+ ospf6_abr_originate_summary_to_area(route, oa);
+}
+
void ospf6_abr_prefix_resummarize(struct ospf6 *o)
{
struct ospf6_route *route;