summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ospfd/ospf_dump.c29
-rw-r--r--ospfd/ospf_dump.h5
-rw-r--r--ospfd/ospf_snmp.c2
-rw-r--r--ospfd/ospf_vty.c4
4 files changed, 33 insertions, 7 deletions
diff --git a/ospfd/ospf_dump.c b/ospfd/ospf_dump.c
index b1aeefcd4..fab5b7d3c 100644
--- a/ospfd/ospf_dump.c
+++ b/ospfd/ospf_dump.c
@@ -127,7 +127,9 @@ const char *ospf_area_desc_string(struct ospf_area *area)
return buf;
}
-#define OSPF_IF_STRING_MAXLEN 40
+#define OSPF_IF_STRING_MAXLEN 40
+
+/* Display both nbr and ism state of the ospf neighbor.*/
const char *ospf_if_name_string(struct ospf_interface *oi)
{
static char buf[OSPF_IF_STRING_MAXLEN] = "";
@@ -146,6 +148,13 @@ const char *ospf_if_name_string(struct ospf_interface *oi)
return buf;
}
+/* Display only the nbr state.*/
+void ospf_nbr_state_message(struct ospf_neighbor *nbr, char *buf, size_t size)
+{
+ snprintf(buf, size, "%s",
+ lookup_msg(ospf_nsm_state_msg, nbr->state, NULL));
+}
+
int ospf_nbr_ism_state(struct ospf_neighbor *nbr)
{
int state;
@@ -161,9 +170,23 @@ int ospf_nbr_ism_state(struct ospf_neighbor *nbr)
return state;
}
-void ospf_nbr_state_message(struct ospf_neighbor *nbr, char *buf, size_t size)
+void ospf_nbr_ism_state_message(struct ospf_neighbor *nbr, char *buf,
+ size_t size)
{
- int state = ospf_nbr_ism_state(nbr);
+ int state;
+ struct ospf_interface *oi = nbr->oi;
+
+ if (!oi)
+ return;
+
+ /* network type is point-to-point */
+ if (oi->type == OSPF_IFTYPE_POINTOPOINT) {
+ snprintf(buf, size, "%s/-",
+ lookup_msg(ospf_nsm_state_msg, nbr->state, NULL));
+ return;
+ }
+
+ state = ospf_nbr_ism_state(nbr);
snprintf(buf, size, "%s/%s",
lookup_msg(ospf_nsm_state_msg, nbr->state, NULL),
diff --git a/ospfd/ospf_dump.h b/ospfd/ospf_dump.h
index 031ec2f42..58227d038 100644
--- a/ospfd/ospf_dump.h
+++ b/ospfd/ospf_dump.h
@@ -151,7 +151,10 @@ extern const char *ospf_area_name_string(struct ospf_area *);
extern const char *ospf_area_desc_string(struct ospf_area *);
extern const char *ospf_if_name_string(struct ospf_interface *);
extern int ospf_nbr_ism_state(struct ospf_neighbor *nbr);
-extern void ospf_nbr_state_message(struct ospf_neighbor *, char *, size_t);
+extern void ospf_nbr_state_message(struct ospf_neighbor *nbr, char *buf,
+ size_t size);
+extern void ospf_nbr_ism_state_message(struct ospf_neighbor *nbr, char *buf,
+ size_t size);
extern const char *ospf_timer_dump(struct thread *, char *, size_t);
extern const char *ospf_timeval_dump(struct timeval *, char *, size_t);
extern void ospf_packet_dump(struct stream *);
diff --git a/ospfd/ospf_snmp.c b/ospfd/ospf_snmp.c
index 432f95f9d..a1ea4e45d 100644
--- a/ospfd/ospf_snmp.c
+++ b/ospfd/ospf_snmp.c
@@ -2432,7 +2432,7 @@ static void ospfTrapNbrStateChange(struct ospf_neighbor *on)
oid index[sizeof(oid) * (IN_ADDR_SIZE + 1)];
char msgbuf[16];
- ospf_nbr_state_message(on, msgbuf, sizeof(msgbuf));
+ ospf_nbr_ism_state_message(on, msgbuf, sizeof(msgbuf));
if (IS_DEBUG_OSPF_EVENT)
zlog_info("%s: trap sent: %pI4 now %s", __func__,
&on->address.u.prefix4, msgbuf);
diff --git a/ospfd/ospf_vty.c b/ospfd/ospf_vty.c
index 96c28be1b..a3fb291bf 100644
--- a/ospfd/ospf_vty.c
+++ b/ospfd/ospf_vty.c
@@ -4400,7 +4400,7 @@ static void show_ip_ospf_neighbor_sub(struct vty *vty,
json_neighbor = json_object_new_object();
- ospf_nbr_state_message(nbr, msgbuf, 16);
+ ospf_nbr_ism_state_message(nbr, msgbuf, 16);
json_object_int_add(json_neighbor, "priority",
nbr->priority);
@@ -4467,7 +4467,7 @@ static void show_ip_ospf_neighbor_sub(struct vty *vty,
json_object_array_add(json_neigh_array,
json_neighbor);
} else {
- ospf_nbr_state_message(nbr, msgbuf, 16);
+ ospf_nbr_ism_state_message(nbr, msgbuf, 16);
if (nbr->state == NSM_Attempt
&& nbr->router_id.s_addr == INADDR_ANY)