Merge pull request #9108 from opensourcerouting/ospf6d-range-fixes

ospf6d: fix argument processing in the "area ... range" command
This commit is contained in:
Donald Sharp 2021-08-03 21:15:12 -04:00 committed by GitHub
commit 3e18e550ed
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 8 deletions

View File

@ -70,6 +70,20 @@ OSPF6 router
Use this command to control the maximum number of parallel routes that
OSPFv3 can support. The default is 64.
.. clicmd:: area A.B.C.D range X:X::X:X/M [<advertise|not-advertise|cost (0-16777215)>]
.. clicmd:: area (0-4294967295) range X:X::X:X/M [<advertise|not-advertise|cost (0-16777215)>]
Summarize a group of internal subnets into a single Inter-Area-Prefix LSA.
This command can only be used at the area boundary (ABR router).
By default, the metric of the summary route is calculated as the highest
metric among the summarized routes. The `cost` option, however, can be used
to set an explicit metric.
The `not-advertise` option, when present, prevents the summary route from
being advertised, effectively filtering the summarized routes.
.. clicmd:: write-multiplier (1-100)
Use this command to tune the amount of work done in the packet read and

View File

@ -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);
@ -526,16 +526,15 @@ DEFUN (area_range,
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;