mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-09 19:06:07 +00:00
Merge pull request #10543 from FRRouting/mergify/bp/dev/8.2/pr-10511
ospfd: fix loss of mixed form in "range" command (backport #10511)
This commit is contained in:
commit
d992107a44
@ -652,20 +652,22 @@ DEFUN (ospf_area_range,
|
|||||||
|
|
||||||
DEFUN (ospf_area_range_cost,
|
DEFUN (ospf_area_range_cost,
|
||||||
ospf_area_range_cost_cmd,
|
ospf_area_range_cost_cmd,
|
||||||
"area <A.B.C.D|(0-4294967295)> range A.B.C.D/M cost (0-16777215)",
|
"area <A.B.C.D|(0-4294967295)> range A.B.C.D/M {cost (0-16777215)|substitute A.B.C.D/M}",
|
||||||
"OSPF area parameters\n"
|
"OSPF area parameters\n"
|
||||||
"OSPF area ID in IP address format\n"
|
"OSPF area ID in IP address format\n"
|
||||||
"OSPF area ID as a decimal value\n"
|
"OSPF area ID as a decimal value\n"
|
||||||
"Summarize routes matching address/mask (border routers only)\n"
|
"Summarize routes matching address/mask (border routers only)\n"
|
||||||
"Area range prefix\n"
|
"Area range prefix\n"
|
||||||
"User specified metric for this range\n"
|
"User specified metric for this range\n"
|
||||||
"Advertised metric for this range\n")
|
"Advertised metric for this range\n"
|
||||||
|
"Announce area range as another prefix\n"
|
||||||
|
"Network prefix to be announced instead of range\n")
|
||||||
{
|
{
|
||||||
VTY_DECLVAR_INSTANCE_CONTEXT(ospf, ospf);
|
VTY_DECLVAR_INSTANCE_CONTEXT(ospf, ospf);
|
||||||
int idx_ipv4_number = 1;
|
int idx_ipv4_number = 1;
|
||||||
int idx_ipv4_prefixlen = 3;
|
int idx_ipv4_prefixlen = 3;
|
||||||
int idx_cost = 5;
|
int idx = 4;
|
||||||
struct prefix_ipv4 p;
|
struct prefix_ipv4 p, s;
|
||||||
struct in_addr area_id;
|
struct in_addr area_id;
|
||||||
int format;
|
int format;
|
||||||
uint32_t cost;
|
uint32_t cost;
|
||||||
@ -677,8 +679,16 @@ DEFUN (ospf_area_range_cost,
|
|||||||
ospf_area_display_format_set(ospf, ospf_area_get(ospf, area_id),
|
ospf_area_display_format_set(ospf, ospf_area_get(ospf, area_id),
|
||||||
format);
|
format);
|
||||||
|
|
||||||
cost = strtoul(argv[idx_cost]->arg, NULL, 10);
|
if (argv_find(argv, argc, "cost", &idx)) {
|
||||||
|
cost = strtoul(argv[idx + 1]->arg, NULL, 10);
|
||||||
ospf_area_range_cost_set(ospf, area_id, &p, cost);
|
ospf_area_range_cost_set(ospf, area_id, &p, cost);
|
||||||
|
}
|
||||||
|
|
||||||
|
idx = 4;
|
||||||
|
if (argv_find(argv, argc, "substitute", &idx)) {
|
||||||
|
str2prefix_ipv4(argv[idx + 1]->arg, &s);
|
||||||
|
ospf_area_range_substitute_set(ospf, area_id, &p, &s);
|
||||||
|
}
|
||||||
|
|
||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
@ -742,36 +752,6 @@ DEFUN (no_ospf_area_range,
|
|||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
DEFUN (ospf_area_range_substitute,
|
|
||||||
ospf_area_range_substitute_cmd,
|
|
||||||
"area <A.B.C.D|(0-4294967295)> range A.B.C.D/M substitute A.B.C.D/M",
|
|
||||||
"OSPF area parameters\n"
|
|
||||||
"OSPF area ID in IP address format\n"
|
|
||||||
"OSPF area ID as a decimal value\n"
|
|
||||||
"Summarize routes matching address/mask (border routers only)\n"
|
|
||||||
"Area range prefix\n"
|
|
||||||
"Announce area range as another prefix\n"
|
|
||||||
"Network prefix to be announced instead of range\n")
|
|
||||||
{
|
|
||||||
VTY_DECLVAR_INSTANCE_CONTEXT(ospf, ospf);
|
|
||||||
int idx_ipv4_number = 1;
|
|
||||||
int idx_ipv4_prefixlen = 3;
|
|
||||||
int idx_ipv4_prefixlen_2 = 5;
|
|
||||||
struct prefix_ipv4 p, s;
|
|
||||||
struct in_addr area_id;
|
|
||||||
int format;
|
|
||||||
|
|
||||||
VTY_GET_OSPF_AREA_ID(area_id, format, argv[idx_ipv4_number]->arg);
|
|
||||||
str2prefix_ipv4(argv[idx_ipv4_prefixlen]->arg, &p);
|
|
||||||
str2prefix_ipv4(argv[idx_ipv4_prefixlen_2]->arg, &s);
|
|
||||||
|
|
||||||
ospf_area_range_substitute_set(ospf, area_id, &p, &s);
|
|
||||||
ospf_area_display_format_set(ospf, ospf_area_get(ospf, area_id),
|
|
||||||
format);
|
|
||||||
|
|
||||||
return CMD_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
DEFUN (no_ospf_area_range_substitute,
|
DEFUN (no_ospf_area_range_substitute,
|
||||||
no_ospf_area_range_substitute_cmd,
|
no_ospf_area_range_substitute_cmd,
|
||||||
"no area <A.B.C.D|(0-4294967295)> range A.B.C.D/M substitute A.B.C.D/M",
|
"no area <A.B.C.D|(0-4294967295)> range A.B.C.D/M substitute A.B.C.D/M",
|
||||||
@ -12769,7 +12749,6 @@ void ospf_vty_init(void)
|
|||||||
install_element(OSPF_NODE, &ospf_area_range_cost_cmd);
|
install_element(OSPF_NODE, &ospf_area_range_cost_cmd);
|
||||||
install_element(OSPF_NODE, &ospf_area_range_not_advertise_cmd);
|
install_element(OSPF_NODE, &ospf_area_range_not_advertise_cmd);
|
||||||
install_element(OSPF_NODE, &no_ospf_area_range_cmd);
|
install_element(OSPF_NODE, &no_ospf_area_range_cmd);
|
||||||
install_element(OSPF_NODE, &ospf_area_range_substitute_cmd);
|
|
||||||
install_element(OSPF_NODE, &no_ospf_area_range_substitute_cmd);
|
install_element(OSPF_NODE, &no_ospf_area_range_substitute_cmd);
|
||||||
|
|
||||||
/* "area virtual-link" commands. */
|
/* "area virtual-link" commands. */
|
||||||
|
Loading…
Reference in New Issue
Block a user