Merge pull request #1502 from chiragshah6/ospf_vrf_dev

ospfd: Display all vrf aware ospf interface config
This commit is contained in:
Renato Westphal 2017-12-05 14:47:53 -02:00 committed by GitHub
commit 17473b9a45
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -9635,26 +9635,23 @@ const char *ospf_int_type_str[] = {"unknown", /* should never be used. */
"virtual-link", /* should never be used. */ "virtual-link", /* should never be used. */
"loopback"}; "loopback"};
static int config_write_interface_one(struct vty *vty, struct ospf *ospf) static int config_write_interface_one(struct vty *vty, struct vrf *vrf)
{ {
struct vrf *vrf = vrf_lookup_by_id(ospf->vrf_id);
struct listnode *node; struct listnode *node;
struct interface *ifp; struct interface *ifp;
struct crypt_key *ck; struct crypt_key *ck;
struct route_node *rn = NULL; struct route_node *rn = NULL;
struct ospf_if_params *params; struct ospf_if_params *params;
int write = 0; int write = 0;
struct ospf *ospf = vrf->info;
FOR_ALL_INTERFACES (vrf, ifp) { FOR_ALL_INTERFACES (vrf, ifp) {
struct vrf *vrf = NULL;
if (memcmp(ifp->name, "VLINK", 5) == 0) if (memcmp(ifp->name, "VLINK", 5) == 0)
continue; continue;
vrf = vrf_lookup_by_id(ifp->vrf_id);
vty_frame(vty, "!\n"); vty_frame(vty, "!\n");
if (ifp->vrf_id == VRF_DEFAULT || vrf == NULL) if (ifp->vrf_id == VRF_DEFAULT)
vty_frame(vty, "interface %s\n", ifp->name); vty_frame(vty, "interface %s\n", ifp->name);
else else
vty_frame(vty, "interface %s vrf %s\n", vty_frame(vty, "interface %s vrf %s\n",
@ -9670,7 +9667,8 @@ static int config_write_interface_one(struct vty *vty, struct ospf *ospf)
/* Interface Network print. */ /* Interface Network print. */
if (OSPF_IF_PARAM_CONFIGURED(params, type) if (OSPF_IF_PARAM_CONFIGURED(params, type)
&& params->type != OSPF_IFTYPE_LOOPBACK) { && params->type != OSPF_IFTYPE_LOOPBACK) {
if (params->type != ospf_default_iftype(ifp)) { if (params->type !=
ospf_default_iftype(ifp)) {
vty_out(vty, " ip ospf network %s", vty_out(vty, " ip ospf network %s",
ospf_int_type_str ospf_int_type_str
[params->type]); [params->type]);
@ -9730,11 +9728,13 @@ static int config_write_interface_one(struct vty *vty, struct ospf *ospf)
/* Cryptographic Authentication Key print. */ /* Cryptographic Authentication Key print. */
if (params && params->auth_crypt) { if (params && params->auth_crypt) {
for (ALL_LIST_ELEMENTS_RO(params->auth_crypt, for (ALL_LIST_ELEMENTS_RO(
params->auth_crypt,
node, ck)) { node, ck)) {
vty_out(vty, vty_out(vty,
" ip ospf message-digest-key %d md5 %s", " ip ospf message-digest-key %d md5 %s",
ck->key_id, ck->auth_key); ck->key_id,
ck->auth_key);
if (params != IF_DEF_PARAMS(ifp)) if (params != IF_DEF_PARAMS(ifp))
vty_out(vty, " %s", vty_out(vty, " %s",
inet_ntoa(rn->p.u.prefix4)); inet_ntoa(rn->p.u.prefix4));
@ -9755,7 +9755,8 @@ static int config_write_interface_one(struct vty *vty, struct ospf *ospf)
/* Hello Interval print. */ /* Hello Interval print. */
if (OSPF_IF_PARAM_CONFIGURED(params, v_hello) if (OSPF_IF_PARAM_CONFIGURED(params, v_hello)
&& params->v_hello != OSPF_HELLO_INTERVAL_DEFAULT) { && params->v_hello !=
OSPF_HELLO_INTERVAL_DEFAULT) {
vty_out(vty, " ip ospf hello-interval %u", vty_out(vty, " ip ospf hello-interval %u",
params->v_hello); params->v_hello);
if (params != IF_DEF_PARAMS(ifp)) if (params != IF_DEF_PARAMS(ifp))
@ -9778,7 +9779,8 @@ static int config_write_interface_one(struct vty *vty, struct ospf *ospf)
"minimal hello-multiplier %d", "minimal hello-multiplier %d",
params->fast_hello); params->fast_hello);
else else
vty_out(vty, "%u", params->v_wait); vty_out(vty, "%u",
params->v_wait);
if (params != IF_DEF_PARAMS(ifp)) if (params != IF_DEF_PARAMS(ifp))
vty_out(vty, " %s", vty_out(vty, " %s",
@ -9812,7 +9814,8 @@ static int config_write_interface_one(struct vty *vty, struct ospf *ospf)
} }
/* Transmit Delay print. */ /* Transmit Delay print. */
if (OSPF_IF_PARAM_CONFIGURED(params, transmit_delay) if (OSPF_IF_PARAM_CONFIGURED(params,
transmit_delay)
&& params->transmit_delay && params->transmit_delay
!= OSPF_TRANSMIT_DELAY_DEFAULT) { != OSPF_TRANSMIT_DELAY_DEFAULT) {
vty_out(vty, " ip ospf transmit-delay %u", vty_out(vty, " ip ospf transmit-delay %u",
@ -9825,7 +9828,7 @@ static int config_write_interface_one(struct vty *vty, struct ospf *ospf)
/* Area print. */ /* Area print. */
if (OSPF_IF_PARAM_CONFIGURED(params, if_area)) { if (OSPF_IF_PARAM_CONFIGURED(params, if_area)) {
if (ospf->instance) if (ospf && ospf->instance)
vty_out(vty, " ip ospf %d", vty_out(vty, " ip ospf %d",
ospf->instance); ospf->instance);
else else
@ -9847,11 +9850,13 @@ static int config_write_interface_one(struct vty *vty, struct ospf *ospf)
} }
/* bfd print. */ /* bfd print. */
if (params->bfd_info)
ospf_bfd_write_config(vty, params); ospf_bfd_write_config(vty, params);
/* MTU ignore print. */ /* MTU ignore print. */
if (OSPF_IF_PARAM_CONFIGURED(params, mtu_ignore) if (OSPF_IF_PARAM_CONFIGURED(params, mtu_ignore)
&& params->mtu_ignore != OSPF_MTU_IGNORE_DEFAULT) { && params->mtu_ignore !=
OSPF_MTU_IGNORE_DEFAULT) {
if (params->mtu_ignore == 0) if (params->mtu_ignore == 0)
vty_out(vty, " no ip ospf mtu-ignore"); vty_out(vty, " no ip ospf mtu-ignore");
else else
@ -9865,7 +9870,8 @@ static int config_write_interface_one(struct vty *vty, struct ospf *ospf)
while (1) { while (1) {
if (rn == NULL) if (rn == NULL)
rn = route_top(IF_OIFS_PARAMS(ifp)); rn = route_top(
IF_OIFS_PARAMS(ifp));
else else
rn = route_next(rn); rn = route_next(rn);
@ -9881,6 +9887,7 @@ static int config_write_interface_one(struct vty *vty, struct ospf *ospf)
vty_endframe(vty, NULL); vty_endframe(vty, NULL);
} }
return write; return write;
} }
@ -9888,12 +9895,12 @@ static int config_write_interface_one(struct vty *vty, struct ospf *ospf)
static int config_write_interface(struct vty *vty) static int config_write_interface(struct vty *vty)
{ {
int write = 0; int write = 0;
struct ospf *ospf = NULL; struct vrf *vrf = NULL;
struct listnode *node = NULL;
/* Traverse all ospf [vrf] instances */ /* Display all VRF aware OSPF interface configuration */
for (ALL_LIST_ELEMENTS_RO(om->ospf, node, ospf)) RB_FOREACH (vrf, vrf_name_head, &vrfs_by_name) {
write += config_write_interface_one(vty, ospf); write += config_write_interface_one(vty, vrf);
}
return write; return write;
} }