summaryrefslogtreecommitdiffstats
path: root/ospfd/ospf_te.c
diff options
context:
space:
mode:
authorPhilippe Guibert <philippe.guibert@6wind.com>2018-11-15 11:14:03 +0100
committerPhilippe Guibert <philippe.guibert@6wind.com>2018-12-10 08:31:59 +0100
commit03ed9f02dce7fabcef730721a67f4f9e4bd1a99c (patch)
treea40d9d241f38f565782aa81dbe455b5da35c0523 /ospfd/ospf_te.c
parentMerge pull request #3449 from opensourcerouting/network-wide-transactions (diff)
downloadfrr-03ed9f02dce7fabcef730721a67f4f9e4bd1a99c.tar.xz
frr-03ed9f02dce7fabcef730721a67f4f9e4bd1a99c.zip
ospfd: remove call to if_lookup_all_vrf
so as to isolate ospf contexts separately for each vrf, the interface used is cornered to the passed vrf context. Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
Diffstat (limited to 'ospfd/ospf_te.c')
-rw-r--r--ospfd/ospf_te.c45
1 files changed, 22 insertions, 23 deletions
diff --git a/ospfd/ospf_te.c b/ospfd/ospf_te.c
index 16347f1c5..3efc219fc 100644
--- a/ospfd/ospf_te.c
+++ b/ospfd/ospf_te.c
@@ -2530,8 +2530,8 @@ DEFUN (show_ip_ospf_mpls_te_link,
"Interface name\n")
{
struct vrf *vrf;
- int idx_interface = 5;
- struct interface *ifp;
+ int idx_interface = 0;
+ struct interface *ifp = NULL;
struct listnode *node;
char *vrf_name = NULL;
bool all_vrf;
@@ -2543,7 +2543,7 @@ DEFUN (show_ip_ospf_mpls_te_link,
vrf_name = argv[idx_vrf + 1]->arg;
all_vrf = strmatch(vrf_name, "all");
}
-
+ argv_find(argv, argc, "INTERFACE", &idx_interface);
/* vrf input is provided could be all or specific vrf*/
if (vrf_name) {
if (all_vrf) {
@@ -2557,32 +2557,31 @@ DEFUN (show_ip_ospf_mpls_te_link,
return CMD_SUCCESS;
}
ospf = ospf_lookup_by_inst_name(inst, vrf_name);
- if (ospf == NULL || !ospf->oi_running)
- return CMD_SUCCESS;
- vrf = vrf_lookup_by_id(ospf->vrf_id);
- FOR_ALL_INTERFACES (vrf, ifp)
- show_mpls_te_link_sub(vty, ifp);
+ } else
+ ospf = ospf_lookup_by_vrf_id(VRF_DEFAULT);
+ if (ospf == NULL || !ospf->oi_running)
return CMD_SUCCESS;
- }
- /* Show All Interfaces. */
- if (argc == 5) {
- for (ALL_LIST_ELEMENTS_RO(om->ospf, node, ospf)) {
- if (!ospf->oi_running)
- continue;
- vrf = vrf_lookup_by_id(ospf->vrf_id);
- FOR_ALL_INTERFACES (vrf, ifp)
- show_mpls_te_link_sub(vty, ifp);
+
+ vrf = vrf_lookup_by_id(ospf->vrf_id);
+ if (!vrf)
+ return CMD_SUCCESS;
+ if (idx_interface) {
+ ifp = if_lookup_by_name(
+ argv[idx_interface]->arg,
+ ospf->vrf_id);
+ if (ifp == NULL) {
+ vty_out(vty, "No such interface name in vrf %s\n",
+ vrf->name);
+ return CMD_SUCCESS;
}
}
- /* Interface name is specified. */
- else {
- ifp = if_lookup_by_name_all_vrf(argv[idx_interface]->arg);
- if (ifp == NULL)
- vty_out(vty, "No such interface name\n");
- else
+ if (!ifp) {
+ FOR_ALL_INTERFACES (vrf, ifp)
show_mpls_te_link_sub(vty, ifp);
+ return CMD_SUCCESS;
}
+ show_mpls_te_link_sub(vty, ifp);
return CMD_SUCCESS;
}