@@ -366,6 +366,17 @@ void ospf6_area_delete(struct ospf6_area *oa)
366
366
XFREE (MTYPE_OSPF6_AREA , oa );
367
367
}
368
368
369
+ void ospf6_area_no_config_delete (struct ospf6_area * oa )
370
+ {
371
+ if ((oa -> if_list -> count == 0 ) && (oa -> range_table -> count == 0 ) &&
372
+ (oa -> nssa_range_table -> count == 0 ) && !IS_AREA_STUB (oa ) && !IS_AREA_NSSA (oa ) &&
373
+ !PREFIX_NAME_IN (oa ) && !PREFIX_NAME_OUT (oa ) && !IMPORT_NAME (oa ) && !EXPORT_NAME (oa )) {
374
+ if (CHECK_FLAG ((oa )-> flag , OSPF6_AREA_ENABLE ))
375
+ ospf6_area_disable (oa );
376
+ ospf6_area_delete (oa );
377
+ }
378
+ }
379
+
369
380
struct ospf6_area * ospf6_area_lookup_by_area_id (uint32_t area_id )
370
381
{
371
382
struct ospf6_area * oa ;
@@ -646,6 +657,9 @@ DEFUN (no_area_range,
646
657
}
647
658
ospf6_route_remove (range , oa -> range_table );
648
659
660
+ /* Delete area if no interfaces or configuration. */
661
+ ospf6_area_no_config_delete (oa );
662
+
649
663
return CMD_SUCCESS ;
650
664
}
651
665
@@ -814,6 +828,9 @@ DEFUN (no_area_filter_list,
814
828
if (ospf6_check_and_set_router_abr (area -> ospf6 ))
815
829
ospf6_schedule_abr_task (ospf6 );
816
830
831
+ /* Delete area if no interfaces or configuration. */
832
+ ospf6_area_no_config_delete (area );
833
+
817
834
return CMD_SUCCESS ;
818
835
}
819
836
@@ -939,6 +956,9 @@ DEFUN (no_area_import_list,
939
956
if (ospf6_check_and_set_router_abr (area -> ospf6 ))
940
957
ospf6_schedule_abr_task (ospf6 );
941
958
959
+ /* Delete area if no interfaces or configuration. */
960
+ ospf6_area_no_config_delete (area );
961
+
942
962
return CMD_SUCCESS ;
943
963
}
944
964
@@ -1002,6 +1022,9 @@ DEFUN (no_area_export_list,
1002
1022
if (ospf6_check_and_set_router_abr (area -> ospf6 ))
1003
1023
ospf6_schedule_abr_task (ospf6 );
1004
1024
1025
+ /* Delete area if no interfaces or configuration. */
1026
+ ospf6_area_no_config_delete (area );
1027
+
1005
1028
return CMD_SUCCESS ;
1006
1029
}
1007
1030
@@ -1338,6 +1361,9 @@ DEFUN (no_ospf6_area_stub_no_summary,
1338
1361
ospf6_area_stub_unset (ospf6 , area );
1339
1362
ospf6_area_no_summary_unset (ospf6 , area );
1340
1363
1364
+ /* Delete area if no interfaces or configuration. */
1365
+ ospf6_area_no_config_delete (area );
1366
+
1341
1367
return CMD_SUCCESS ;
1342
1368
}
1343
1369
@@ -1418,6 +1444,9 @@ DEFPY(no_ospf6_area_nssa, no_ospf6_area_nssa_cmd,
1418
1444
ospf6_area_no_summary_unset (ospf6 , area );
1419
1445
ospf6_nssa_default_originate_unset (ospf6 , area );
1420
1446
1447
+ /* Delete area if no interfaces or configuration. */
1448
+ ospf6_area_no_config_delete (area );
1449
+
1421
1450
return CMD_SUCCESS ;
1422
1451
}
1423
1452
0 commit comments