summaryrefslogtreecommitdiff
path: root/ospfd
diff options
context:
space:
mode:
authorDonald Sharp <donaldsharp72@gmail.com>2024-04-29 09:21:09 -0400
committerGitHub <noreply@github.com>2024-04-29 09:21:09 -0400
commitedae83911947a80ed5116d5e3aff2e64c91eb724 (patch)
treee94421bb8a30d21ce1758e46841be4e67da90659 /ospfd
parent8421f6221ad37e43010b011cddb4b42623983611 (diff)
parent1ce626aea6f1f274da92478a8e487c229b08f9ce (diff)
Merge pull request #15824 from opensourcerouting/fix/ospf_show_non_default
vtysh: Show `ip ospf network ...` even if it's not the same as the interface type
Diffstat (limited to 'ospfd')
-rw-r--r--ospfd/ospf_interface.c3
-rw-r--r--ospfd/ospf_interface.h1
-rw-r--r--ospfd/ospf_vty.c45
3 files changed, 25 insertions, 24 deletions
diff --git a/ospfd/ospf_interface.c b/ospfd/ospf_interface.c
index 0b27501019..11ac7af7c9 100644
--- a/ospfd/ospf_interface.c
+++ b/ospfd/ospf_interface.c
@@ -1414,7 +1414,8 @@ static int ospf_ifp_create(struct interface *ifp)
(!OSPF_IF_PARAM_CONFIGURED(IF_DEF_PARAMS(ifp), type) ||
if_is_loopback(ifp))) {
SET_IF_PARAM(IF_DEF_PARAMS(ifp), type);
- IF_DEF_PARAMS(ifp)->type = ospf_default_iftype(ifp);
+ if (!IF_DEF_PARAMS(ifp)->type_cfg)
+ IF_DEF_PARAMS(ifp)->type = ospf_default_iftype(ifp);
}
ospf = ifp->vrf->info;
diff --git a/ospfd/ospf_interface.h b/ospfd/ospf_interface.h
index 2e53fbfbfa..45d0b7943a 100644
--- a/ospfd/ospf_interface.h
+++ b/ospfd/ospf_interface.h
@@ -57,6 +57,7 @@ struct ospf_if_params {
DECLARE_IF_PARAM(struct in_addr, if_area);
uint32_t if_area_id_fmt;
+ bool type_cfg;
DECLARE_IF_PARAM(uint8_t, type); /* type of interface */
#define OSPF_IF_ACTIVE 0
#define OSPF_IF_PASSIVE 1
diff --git a/ospfd/ospf_vty.c b/ospfd/ospf_vty.c
index e2f4f64d81..3f8731f369 100644
--- a/ospfd/ospf_vty.c
+++ b/ospfd/ospf_vty.c
@@ -8537,6 +8537,8 @@ DEFUN(ip_ospf_network, ip_ospf_network_cmd,
IF_DEF_PARAMS(ifp)->ptp_dmvpn = 1;
}
+ IF_DEF_PARAMS(ifp)->type_cfg = true;
+
if (IF_DEF_PARAMS(ifp)->type == old_type &&
IF_DEF_PARAMS(ifp)->ptp_dmvpn == old_ptp_dmvpn &&
IF_DEF_PARAMS(ifp)->p2mp_delay_reflood == old_p2mp_delay_reflood &&
@@ -8604,6 +8606,7 @@ DEFUN (no_ip_ospf_network,
struct route_node *rn;
IF_DEF_PARAMS(ifp)->type = ospf_default_iftype(ifp);
+ IF_DEF_PARAMS(ifp)->type_cfg = false;
IF_DEF_PARAMS(ifp)->ptp_dmvpn = 0;
IF_DEF_PARAMS(ifp)->p2mp_delay_reflood =
OSPF_P2MP_DELAY_REFLOOD_DEFAULT;
@@ -12205,29 +12208,25 @@ static int config_write_interface_one(struct vty *vty, struct vrf *vrf)
do {
/* Interface Network print. */
- if (OSPF_IF_PARAM_CONFIGURED(params, type)
- && params->type != OSPF_IFTYPE_LOOPBACK) {
- if (params->type != ospf_default_iftype(ifp)) {
- vty_out(vty, " ip ospf network %s",
- ospf_int_type_str
- [params->type]);
- if (params->type
- == OSPF_IFTYPE_POINTOPOINT
- && params->ptp_dmvpn)
- vty_out(vty, " dmvpn");
- if (params->type ==
- OSPF_IFTYPE_POINTOMULTIPOINT &&
- params->p2mp_delay_reflood)
- vty_out(vty, " delay-reflood");
- if (params->type ==
- OSPF_IFTYPE_POINTOMULTIPOINT &&
- params->p2mp_non_broadcast)
- vty_out(vty, " non-broadcast");
- if (params != IF_DEF_PARAMS(ifp) && rn)
- vty_out(vty, " %pI4",
- &rn->p.u.prefix4);
- vty_out(vty, "\n");
- }
+ if (OSPF_IF_PARAM_CONFIGURED(params, type) &&
+ params->type != OSPF_IFTYPE_LOOPBACK &&
+ params->type_cfg) {
+ vty_out(vty, " ip ospf network %s",
+ ospf_int_type_str[params->type]);
+ if (params->type == OSPF_IFTYPE_POINTOPOINT &&
+ params->ptp_dmvpn)
+ vty_out(vty, " dmvpn");
+ if (params->type ==
+ OSPF_IFTYPE_POINTOMULTIPOINT &&
+ params->p2mp_delay_reflood)
+ vty_out(vty, " delay-reflood");
+ if (params->type ==
+ OSPF_IFTYPE_POINTOMULTIPOINT &&
+ params->p2mp_non_broadcast)
+ vty_out(vty, " non-broadcast");
+ if (params != IF_DEF_PARAMS(ifp) && rn)
+ vty_out(vty, " %pI4", &rn->p.u.prefix4);
+ vty_out(vty, "\n");
}
/* OSPF interface authentication print */