diff options
Diffstat (limited to 'ospf6d/ospf6_area.c')
| -rw-r--r-- | ospf6d/ospf6_area.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/ospf6d/ospf6_area.c b/ospf6d/ospf6_area.c index 355b8441bd..0f1f061225 100644 --- a/ospf6d/ospf6_area.c +++ b/ospf6d/ospf6_area.c @@ -504,7 +504,7 @@ DEFUN (area_range, struct ospf6_area *oa; struct prefix prefix; struct ospf6_route *range; - uint32_t cost = OSPF_AREA_RANGE_COST_UNSPEC; + uint32_t cost; VTY_DECLVAR_CONTEXT(ospf6, ospf6); @@ -519,23 +519,22 @@ DEFUN (area_range, range = ospf6_route_lookup(&prefix, oa->range_table); if (range == NULL) { - range = ospf6_route_create(); + range = ospf6_route_create(ospf6); range->type = OSPF6_DEST_TYPE_RANGE; range->prefix = prefix; range->path.area_id = oa->area_id; range->path.cost = OSPF_AREA_RANGE_COST_UNSPEC; } + /* default settings */ + cost = OSPF_AREA_RANGE_COST_UNSPEC; + UNSET_FLAG(range->flag, OSPF6_ROUTE_DO_NOT_ADVERTISE); + if (argc > idx_type) { - if (strmatch(argv[idx_type]->text, "not-advertise")) { + if (strmatch(argv[idx_type]->text, "not-advertise")) SET_FLAG(range->flag, OSPF6_ROUTE_DO_NOT_ADVERTISE); - } else if (strmatch(argv[idx_type]->text, "advertise")) { - UNSET_FLAG(range->flag, OSPF6_ROUTE_DO_NOT_ADVERTISE); - cost = range->path.u.cost_config; - } else { + else if (strmatch(argv[idx_type]->text, "cost")) cost = strtoul(argv[5]->arg, NULL, 10); - UNSET_FLAG(range->flag, OSPF6_ROUTE_DO_NOT_ADVERTISE); - } } range->path.u.cost_config = cost; |
