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] = "";
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;
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),
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 *);
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);
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);
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)