return ret;
}
}
- ospf_interface_area_set(ospf, ifp);
- ospf->if_ospf_cli_count++;
+ if (!ospf_interface_area_is_already_set(ospf,
+ ifp)) {
+ ospf_interface_area_set(ospf, ifp);
+ ospf->if_ospf_cli_count++;
+ }
}
}
return CMD_SUCCESS;
}
if (ospf->vrf_id != VRF_UNKNOWN)
- ifp = if_get_by_name(argv[1]->arg, ospf->vrf_id, 0);
+ ifp = if_get_by_name(argv[1]->arg, ospf->vrf_id);
if (ifp == NULL) {
vty_out(vty, "interface %s not found.\n", (char *)argv[1]->arg);
}
if (ospf->vrf_id != VRF_UNKNOWN)
- ifp = if_get_by_name(argv[2]->arg, ospf->vrf_id, 0);
+ ifp = if_get_by_name(argv[2]->arg, ospf->vrf_id);
if (ifp == NULL) {
vty_out(vty, "interface %s not found.\n", (char *)argv[2]->arg);
if (vl_config->auth_key) {
memset(IF_DEF_PARAMS(ifp)->auth_simple, 0,
OSPF_AUTH_SIMPLE_SIZE + 1);
- strncpy((char *)IF_DEF_PARAMS(ifp)->auth_simple,
- vl_config->auth_key, OSPF_AUTH_SIMPLE_SIZE);
+ strlcpy((char *)IF_DEF_PARAMS(ifp)->auth_simple,
+ vl_config->auth_key,
+ sizeof(IF_DEF_PARAMS(ifp)->auth_simple));
} else if (vl_config->md5_key) {
if (ospf_crypt_key_lookup(IF_DEF_PARAMS(ifp)->auth_crypt,
vl_config->crypto_key_id)
ck = ospf_crypt_key_new();
ck->key_id = vl_config->crypto_key_id;
memset(ck->auth_key, 0, OSPF_AUTH_MD5_SIZE + 1);
- strncpy((char *)ck->auth_key, vl_config->md5_key,
- OSPF_AUTH_MD5_SIZE);
+ strlcpy((char *)ck->auth_key, vl_config->md5_key,
+ sizeof(ck->auth_key));
ospf_crypt_key_add(IF_DEF_PARAMS(ifp)->auth_crypt, ck);
} else if (vl_config->crypto_key_id != 0) {
if (vl_config.crypto_key_id < 0)
return CMD_WARNING_CONFIG_FAILED;
- memset(md5_key, 0, OSPF_AUTH_MD5_SIZE + 1);
- strncpy(md5_key, argv[idx + 3]->arg, OSPF_AUTH_MD5_SIZE);
+ strlcpy(md5_key, argv[idx + 3]->arg, sizeof(md5_key));
vl_config.md5_key = md5_key;
}
if (argv_find(argv, argc, "authentication-key", &idx)) {
- memset(auth_key, 0, OSPF_AUTH_SIMPLE_SIZE + 1);
- strncpy(auth_key, argv[idx + 1]->arg, OSPF_AUTH_SIMPLE_SIZE);
+ strlcpy(auth_key, argv[idx + 1]->arg, sizeof(auth_key));
vl_config.auth_key = auth_key;
}
return CMD_WARNING_CONFIG_FAILED;
}
+ vl_data = ospf_vl_lookup(ospf, area, vl_config.vl_peer);
+ if (!vl_data) {
+ vty_out(vty, "Virtual link does not exist\n");
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+
if (argc <= 5) {
/* Basic VLink no command */
/* Thats all folks! - BUGS B. strikes again!!!*/
- if ((vl_data = ospf_vl_lookup(ospf, area, vl_config.vl_peer)))
- ospf_vl_delete(ospf, vl_data);
-
+ ospf_vl_delete(ospf, vl_data);
ospf_area_check_free(ospf, vl_config.area_id);
-
return CMD_SUCCESS;
}
if (ospf->stub_router_startup_time
!= OSPF_STUB_ROUTER_UNCONFIGURED)
json_object_int_add(
- json_vrf, "postStartEnabledMsecs",
- ospf->stub_router_startup_time / 1000);
+ json_vrf, "postStartEnabledSecs",
+ ospf->stub_router_startup_time);
if (ospf->stub_router_shutdown_time
!= OSPF_STUB_ROUTER_UNCONFIGURED)
json_object_int_add(
- json_vrf, "preShutdownEnabledMsecs",
- ospf->stub_router_shutdown_time / 1000);
+ json_vrf, "preShutdownEnabledSecs",
+ ospf->stub_router_shutdown_time);
} else {
vty_out(vty,
" Stub router advertisement is configured\n");
bool uj = use_json(argc, argv);
struct listnode *node = NULL;
char *vrf_name = NULL;
- bool all_vrf = FALSE;
+ bool all_vrf = false;
int ret = CMD_SUCCESS;
int inst = 0;
int idx_vrf = 0;
/* vrf input is provided could be all or specific vrf*/
if (vrf_name) {
- bool ospf_output = FALSE;
+ bool ospf_output = false;
use_vrf = 1;
for (ALL_LIST_ELEMENTS_RO(om->ospf, node, ospf)) {
if (!ospf->oi_running)
continue;
- ospf_output = TRUE;
+ ospf_output = true;
ret = show_ip_ospf_common(vty, ospf, json,
use_vrf);
}
json_object_int_add(json_interface_sub, "cost",
oi->output_cost);
json_object_int_add(
- json_interface_sub, "transmitDelayMsecs",
- 1000 / OSPF_IF_PARAM(oi, transmit_delay));
+ json_interface_sub, "transmitDelaySecs",
+ OSPF_IF_PARAM(oi, transmit_delay));
json_object_string_add(json_interface_sub, "state",
lookup_msg(ospf_ism_state_msg,
oi->state, NULL));
if (OSPF_IF_PARAM(oi, fast_hello) == 0)
json_object_int_add(
json_interface_sub, "timerMsecs",
- 1000 / OSPF_IF_PARAM(oi, v_hello));
+ OSPF_IF_PARAM(oi, v_hello) * 1000);
else
json_object_int_add(
json_interface_sub, "timerMsecs",
1000 / OSPF_IF_PARAM(oi, fast_hello));
json_object_int_add(json_interface_sub,
- "timerDeadMsecs",
- 1000 / OSPF_IF_PARAM(oi, v_wait));
+ "timerDeadSecs",
+ OSPF_IF_PARAM(oi, v_wait));
json_object_int_add(json_interface_sub,
- "timerWaitMsecs",
- 1000 / OSPF_IF_PARAM(oi, v_wait));
+ "timerWaitSecs",
+ OSPF_IF_PARAM(oi, v_wait));
json_object_int_add(
- json_interface_sub, "timerRetransmit",
- 1000 / OSPF_IF_PARAM(oi, retransmit_interval));
+ json_interface_sub, "timerRetransmitSecs",
+ OSPF_IF_PARAM(oi, retransmit_interval));
} else {
vty_out(vty, " Timer intervals configured,");
vty_out(vty, " Hello ");
bool uj = use_json(argc, argv);
struct listnode *node = NULL;
char *vrf_name = NULL, *intf_name = NULL;
- bool all_vrf = FALSE;
+ bool all_vrf = false;
int ret = CMD_SUCCESS;
int inst = 0;
int idx_vrf = 0, idx_intf = 0;
struct ospf *ospf = NULL;
struct listnode *node = NULL;
char *vrf_name = NULL, *intf_name = NULL;
- bool all_vrf = FALSE;
+ bool all_vrf = false;
int inst = 0;
int idx_vrf = 0, idx_intf = 0;
bool uj = use_json(argc, argv);
bool uj = use_json(argc, argv);
struct listnode *node = NULL;
char *vrf_name = NULL;
- bool all_vrf = FALSE;
+ bool all_vrf = false;
int ret = CMD_SUCCESS;
int inst = 0;
int idx_vrf = 0;
bool uj = use_json(argc, argv);
struct listnode *node = NULL;
char *vrf_name = NULL;
- bool all_vrf = FALSE;
+ bool all_vrf = false;
int ret = CMD_SUCCESS;
int inst = 0;
int idx_vrf = 0;
ospf_show_vrf_name(ospf, vty, json, use_vrf);
- ifp = if_lookup_by_name_all_vrf(argv[arg_base]->arg);
+ ifp = if_lookup_by_name(argv[arg_base]->arg, ospf->vrf_id);
if (!ifp) {
if (use_json)
json_object_boolean_true_add(json, "noSuchIface");
DEFUN (show_ip_ospf_neighbor_int,
show_ip_ospf_neighbor_int_cmd,
- "show ip ospf neighbor IFNAME [json]",
+ "show ip ospf [vrf <NAME>] neighbor IFNAME [json]",
SHOW_STR
IP_STR
"OSPF information\n"
+ VRF_CMD_HELP_STR
"Neighbor list\n"
"Interface name\n"
JSON_STR)
{
struct ospf *ospf;
- int idx_ifname = 4;
+ int idx_ifname = 0;
+ int idx_vrf = 0;
bool uj = use_json(argc, argv);
- struct listnode *node = NULL;
int ret = CMD_SUCCESS;
struct interface *ifp = NULL;
+ char *vrf_name = NULL;
+ vrf_id_t vrf_id = VRF_DEFAULT;
+ struct vrf *vrf = NULL;
+
+ if (argv_find(argv, argc, "vrf", &idx_vrf))
+ vrf_name = argv[idx_vrf + 1]->arg;
+ if (vrf_name && strmatch(vrf_name, VRF_DEFAULT_NAME))
+ vrf_name = NULL;
+ if (vrf_name) {
+ vrf = vrf_lookup_by_name(vrf_name);
+ if (vrf)
+ vrf_id = vrf->vrf_id;
+ }
+ ospf = ospf_lookup_by_vrf_id(vrf_id);
+
+ if (!ospf || !ospf->oi_running)
+ return ret;
if (!uj)
show_ip_ospf_neighbour_header(vty);
- ifp = if_lookup_by_name_all_vrf(argv[idx_ifname]->arg);
- for (ALL_LIST_ELEMENTS_RO(om->ospf, node, ospf)) {
- if (!ospf->oi_running)
- continue;
- if (!ifp || ifp->vrf_id != ospf->vrf_id)
- continue;
- ret = show_ip_ospf_neighbor_int_common(vty, ospf, idx_ifname,
- argv, uj, 0);
- }
+ argv_find(argv, argc, "IFNAME", &idx_ifname);
+
+ ifp = if_lookup_by_name(argv[idx_ifname]->arg, vrf_id);
+ if (!ifp)
+ return ret;
+ ret = show_ip_ospf_neighbor_int_common(vty, ospf, idx_ifname,
+ argv, uj, 0);
return ret;
}
}
static int show_ip_ospf_neighbor_id_common(struct vty *vty, struct ospf *ospf,
- int arg_base,
- struct cmd_token **argv,
+ struct in_addr *router_id,
bool use_json, uint8_t use_vrf)
{
struct listnode *node;
struct ospf_neighbor *nbr;
struct ospf_interface *oi;
- struct in_addr router_id;
- int ret;
json_object *json = NULL;
if (use_json)
ospf_show_vrf_name(ospf, vty, json, use_vrf);
- ret = inet_aton(argv[arg_base]->arg, &router_id);
- if (!ret) {
- if (!use_json)
- vty_out(vty, "Please specify Neighbor ID by A.B.C.D\n");
- else {
- vty_out(vty, "{}\n");
- json_object_free(json);
- }
- return CMD_WARNING;
- }
-
for (ALL_LIST_ELEMENTS_RO(ospf->oiflist, node, oi)) {
- if ((nbr = ospf_nbr_lookup_by_routerid(oi->nbrs, &router_id))) {
+ if ((nbr = ospf_nbr_lookup_by_routerid(oi->nbrs, router_id))) {
show_ip_ospf_neighbor_detail_sub(vty, oi, nbr, json,
use_json);
}
return CMD_SUCCESS;
}
-DEFUN (show_ip_ospf_neighbor_id,
+DEFPY (show_ip_ospf_neighbor_id,
show_ip_ospf_neighbor_id_cmd,
- "show ip ospf neighbor A.B.C.D [json]",
+ "show ip ospf neighbor A.B.C.D$router_id [json$json]",
SHOW_STR
IP_STR
"OSPF information\n"
JSON_STR)
{
struct ospf *ospf;
- bool uj = use_json(argc, argv);
- struct listnode *node = NULL;
+ struct listnode *node;
int ret = CMD_SUCCESS;
for (ALL_LIST_ELEMENTS_RO(om->ospf, node, ospf)) {
if (!ospf->oi_running)
continue;
- ret = show_ip_ospf_neighbor_id_common(vty, ospf, 0, argv, uj,
- 0);
+ ret = show_ip_ospf_neighbor_id_common(vty, ospf, &router_id,
+ !!json, 0);
}
return ret;
}
-DEFUN (show_ip_ospf_instance_neighbor_id,
+DEFPY (show_ip_ospf_instance_neighbor_id,
show_ip_ospf_instance_neighbor_id_cmd,
- "show ip ospf (1-65535) neighbor A.B.C.D [json]",
+ "show ip ospf (1-65535)$instance neighbor A.B.C.D$router_id [json$json]",
SHOW_STR
IP_STR
"OSPF information\n"
"Neighbor ID\n"
JSON_STR)
{
- int idx_number = 3;
- int idx_router_id = 5;
struct ospf *ospf;
- unsigned short instance = 0;
- bool uj = use_json(argc, argv);
- instance = strtoul(argv[idx_number]->arg, NULL, 10);
ospf = ospf_lookup_instance(instance);
if (ospf == NULL)
return CMD_NOT_MY_INSTANCE;
if (!ospf->oi_running)
return CMD_SUCCESS;
- return show_ip_ospf_neighbor_id_common(vty, ospf, idx_router_id, argv,
- uj, 0);
+ return show_ip_ospf_neighbor_id_common(vty, ospf, &router_id, !!json,
+ 0);
}
static int show_ip_ospf_neighbor_detail_common(struct vty *vty,
bool uj = use_json(argc, argv);
struct listnode *node = NULL;
char *vrf_name = NULL;
- bool all_vrf = FALSE;
+ bool all_vrf = false;
int ret = CMD_SUCCESS;
int inst = 0;
int idx_vrf = 0;
bool uj = use_json(argc, argv);
struct listnode *node = NULL;
char *vrf_name = NULL;
- bool all_vrf = FALSE;
+ bool all_vrf = false;
int ret = CMD_SUCCESS;
int inst = 0;
int idx_vrf = 0;
vty_out(vty, "\nOSPF Instance: %d\n\n", ospf->instance);
}
- ifp = if_lookup_by_name_all_vrf(argv[arg_base]->arg);
+ ifp = if_lookup_by_name(argv[arg_base]->arg, ospf->vrf_id);
if (!ifp) {
if (!use_json)
vty_out(vty, "No such interface.\n");
bool uj = use_json(argc, argv);
struct listnode *node = NULL;
int ret = CMD_SUCCESS;
- bool ospf_output = FALSE;
+ bool ospf_output = false;
for (ALL_LIST_ELEMENTS_RO(om->ospf, node, ospf)) {
if (!ospf->oi_running)
continue;
- ospf_output = TRUE;
+ ospf_output = true;
ret = show_ip_ospf_neighbor_int_detail_common(vty, ospf, 0,
argv, uj);
}
struct ospf *ospf = NULL;
struct listnode *node = NULL;
char *vrf_name = NULL;
- bool all_vrf = FALSE;
+ bool all_vrf = false;
int ret = CMD_SUCCESS;
int inst = 0;
int idx_vrf = 0;
OSPF_FIND_VRF_ARGS(argv, argc, idx_vrf, vrf_name, all_vrf);
if (vrf_name) {
- bool ospf_output = FALSE;
+ bool ospf_output = false;
use_vrf = 1;
for (ALL_LIST_ELEMENTS_RO(om->ospf, node, ospf)) {
if (!ospf->oi_running)
continue;
- ospf_output = TRUE;
+ ospf_output = true;
ret = show_ip_ospf_database_common(
vty, ospf, idx_vrf ? 2 : 0, argc, argv,
use_vrf);
unsigned short instance = 0;
struct listnode *node = NULL;
char *vrf_name = NULL;
- bool all_vrf = FALSE;
+ bool all_vrf = false;
int ret = CMD_SUCCESS;
int inst = 0;
int idx = 0;
unsigned short instance = 0;
struct listnode *node = NULL;
char *vrf_name = NULL;
- bool all_vrf = FALSE;
+ bool all_vrf = false;
int ret = CMD_SUCCESS;
int inst = 0;
int idx = 0, idx_vrf = 0;
OSPF_FIND_VRF_ARGS(argv, argc, idx_vrf, vrf_name, all_vrf);
if (vrf_name) {
- bool ospf_output = FALSE;
+ bool ospf_output = false;
use_vrf = 1;
for (ALL_LIST_ELEMENTS_RO(om->ospf, node, ospf)) {
if (!ospf->oi_running)
continue;
- ospf_output = TRUE;
+ ospf_output = true;
ret = show_ip_ospf_database_type_adv_router_common(
vty, ospf, idx ? 1 : 0, argc, argv,
use_vrf);
ospf_if_update_params(ifp, addr);
}
- memset(params->auth_simple, 0, OSPF_AUTH_SIMPLE_SIZE + 1);
- strncpy((char *)params->auth_simple, argv[3]->arg,
- OSPF_AUTH_SIMPLE_SIZE);
+ strlcpy((char *)params->auth_simple, argv[3]->arg,
+ sizeof(params->auth_simple));
SET_IF_PARAM(params, auth_simple);
return CMD_SUCCESS;
ck = ospf_crypt_key_new();
ck->key_id = (uint8_t)key_id;
- memset(ck->auth_key, 0, OSPF_AUTH_MD5_SIZE + 1);
- strncpy((char *)ck->auth_key, cryptkey, OSPF_AUTH_MD5_SIZE);
+ strlcpy((char *)ck->auth_key, cryptkey, sizeof(ck->auth_key));
ospf_crypt_key_add(params->auth_crypt, ck);
SET_IF_PARAM(params, auth_crypt);
struct ospf *ospf = NULL;
struct listnode *node = NULL;
char *vrf_name = NULL;
- bool all_vrf = FALSE;
+ bool all_vrf = false;
int ret = CMD_SUCCESS;
int inst = 0;
int idx_vrf = 0;
OSPF_FIND_VRF_ARGS(argv, argc, idx_vrf, vrf_name, all_vrf);
if (vrf_name) {
- bool ospf_output = FALSE;
+ bool ospf_output = false;
use_vrf = 1;
if (!ospf->oi_running)
continue;
- ospf_output = TRUE;
+ ospf_output = true;
ret = show_ip_ospf_border_routers_common(
vty, ospf, use_vrf);
}
struct ospf *ospf = NULL;
struct listnode *node = NULL;
char *vrf_name = NULL;
- bool all_vrf = FALSE;
+ bool all_vrf = false;
int ret = CMD_SUCCESS;
int inst = 0;
int idx_vrf = 0;
/* vrf input is provided could be all or specific vrf*/
if (vrf_name) {
- bool ospf_output = FALSE;
+ bool ospf_output = false;
use_vrf = 1;
for (ALL_LIST_ELEMENTS_RO(om->ospf, node, ospf)) {
if (!ospf->oi_running)
continue;
- ospf_output = TRUE;
+ ospf_output = true;
ret = show_ip_ospf_route_common(vty, ospf, json,
use_vrf);
}
vty_out(vty, " ip ospf network %s",
ospf_int_type_str
[params->type]);
- if (params != IF_DEF_PARAMS(ifp))
+ if (params != IF_DEF_PARAMS(ifp) && rn)
vty_out(vty, " %s",
inet_ntoa(
rn->p.u.prefix4));
vty_out(vty, " ip ospf authentication%s",
auth_str);
- if (params != IF_DEF_PARAMS(ifp))
+ if (params != IF_DEF_PARAMS(ifp) && rn)
vty_out(vty, " %s",
inet_ntoa(rn->p.u.prefix4));
vty_out(vty, "\n");
&& params->auth_simple[0] != '\0') {
vty_out(vty, " ip ospf authentication-key %s",
params->auth_simple);
- if (params != IF_DEF_PARAMS(ifp))
+ if (params != IF_DEF_PARAMS(ifp) && rn)
vty_out(vty, " %s",
inet_ntoa(rn->p.u.prefix4));
vty_out(vty, "\n");
vty_out(vty,
" ip ospf message-digest-key %d md5 %s",
ck->key_id, ck->auth_key);
- if (params != IF_DEF_PARAMS(ifp))
+ if (params != IF_DEF_PARAMS(ifp) && rn)
vty_out(vty, " %s",
inet_ntoa(
rn->p.u.prefix4));
if (OSPF_IF_PARAM_CONFIGURED(params, output_cost_cmd)) {
vty_out(vty, " ip ospf cost %u",
params->output_cost_cmd);
- if (params != IF_DEF_PARAMS(ifp))
+ if (params != IF_DEF_PARAMS(ifp) && rn)
vty_out(vty, " %s",
inet_ntoa(rn->p.u.prefix4));
vty_out(vty, "\n");
&& params->v_hello != OSPF_HELLO_INTERVAL_DEFAULT) {
vty_out(vty, " ip ospf hello-interval %u",
params->v_hello);
- if (params != IF_DEF_PARAMS(ifp))
+ if (params != IF_DEF_PARAMS(ifp) && rn)
vty_out(vty, " %s",
inet_ntoa(rn->p.u.prefix4));
vty_out(vty, "\n");
else
vty_out(vty, "%u", params->v_wait);
- if (params != IF_DEF_PARAMS(ifp))
+ if (params != IF_DEF_PARAMS(ifp) && rn)
vty_out(vty, " %s",
inet_ntoa(rn->p.u.prefix4));
vty_out(vty, "\n");
!= OSPF_ROUTER_PRIORITY_DEFAULT) {
vty_out(vty, " ip ospf priority %u",
params->priority);
- if (params != IF_DEF_PARAMS(ifp))
+ if (params != IF_DEF_PARAMS(ifp) && rn)
vty_out(vty, " %s",
inet_ntoa(rn->p.u.prefix4));
vty_out(vty, "\n");
!= OSPF_RETRANSMIT_INTERVAL_DEFAULT) {
vty_out(vty, " ip ospf retransmit-interval %u",
params->retransmit_interval);
- if (params != IF_DEF_PARAMS(ifp))
+ if (params != IF_DEF_PARAMS(ifp) && rn)
vty_out(vty, " %s",
inet_ntoa(rn->p.u.prefix4));
vty_out(vty, "\n");
!= OSPF_TRANSMIT_DELAY_DEFAULT) {
vty_out(vty, " ip ospf transmit-delay %u",
params->transmit_delay);
- if (params != IF_DEF_PARAMS(ifp))
+ if (params != IF_DEF_PARAMS(ifp) && rn)
vty_out(vty, " %s",
inet_ntoa(rn->p.u.prefix4));
vty_out(vty, "\n");
area_id2str(buf, sizeof(buf), ¶ms->if_area,
params->if_area_id_fmt);
vty_out(vty, " area %s", buf);
- if (params != IF_DEF_PARAMS(ifp))
+ if (params != IF_DEF_PARAMS(ifp) && rn)
vty_out(vty, " %s",
inet_ntoa(rn->p.u.prefix4));
vty_out(vty, "\n");
vty_out(vty, " no ip ospf mtu-ignore");
else
vty_out(vty, " ip ospf mtu-ignore");
- if (params != IF_DEF_PARAMS(ifp))
+ if (params != IF_DEF_PARAMS(ifp) && rn)
vty_out(vty, " %s",
inet_ntoa(rn->p.u.prefix4));
vty_out(vty, "\n");
DEFUN (clear_ip_ospf_interface,
clear_ip_ospf_interface_cmd,
- "clear ip ospf interface [IFNAME]",
+ "clear ip ospf [vrf <NAME>] interface [IFNAME]",
CLEAR_STR
IP_STR
"OSPF information\n"
+ VRF_CMD_HELP_STR
"Interface information\n"
"Interface name\n")
{
- int idx_ifname = 4;
+ int idx_ifname = 0;
+ int idx_vrf = 0;
struct interface *ifp;
struct listnode *node;
struct ospf *ospf = NULL;
+ char *vrf_name = NULL;
+ vrf_id_t vrf_id = VRF_DEFAULT;
+ struct vrf *vrf = NULL;
- if (argc == 4) /* Clear all the ospfv2 interfaces. */
- {
+ if (argv_find(argv, argc, "vrf", &idx_vrf))
+ vrf_name = argv[idx_vrf + 1]->arg;
+ if (vrf_name && strmatch(vrf_name, VRF_DEFAULT_NAME))
+ vrf_name = NULL;
+ if (vrf_name) {
+ vrf = vrf_lookup_by_name(vrf_name);
+ if (vrf)
+ vrf_id = vrf->vrf_id;
+ }
+ if (!argv_find(argv, argc, "IFNAME", &idx_ifname)) {
+ /* Clear all the ospfv2 interfaces. */
for (ALL_LIST_ELEMENTS_RO(om->ospf, node, ospf)) {
- struct vrf *vrf = vrf_lookup_by_id(ospf->vrf_id);
+ if (vrf_id != ospf->vrf_id)
+ continue;
+ if (!vrf)
+ vrf = vrf_lookup_by_id(ospf->vrf_id);
FOR_ALL_INTERFACES (vrf, ifp)
ospf_interface_clear(ifp);
}
} else {
/* Interface name is specified. */
- ifp = if_lookup_by_name_all_vrf(argv[idx_ifname]->arg);
+ ifp = if_lookup_by_name(argv[idx_ifname]->arg, vrf_id);
if (ifp == NULL)
vty_out(vty, "No such interface name\n");
else