return buf;
}
-
-void ospf_nbr_state_message(struct ospf_neighbor *nbr, char *buf, size_t size)
+int ospf_nbr_ism_state(struct ospf_neighbor *nbr)
{
int state;
struct ospf_interface *oi = nbr->oi;
else
state = ISM_DROther;
+ return state;
+}
+
+void ospf_nbr_state_message(struct ospf_neighbor *nbr, char *buf, size_t size)
+{
+ int state = ospf_nbr_ism_state(nbr);
+
snprintf(buf, size, "%s/%s",
lookup_msg(ospf_nsm_state_msg, nbr->state, NULL),
lookup_msg(ospf_ism_state_msg, state, NULL));
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 const char *ospf_timer_dump(struct thread *, char *, size_t);
extern const char *ospf_timeval_dump(struct timeval *, char *, size_t);
json_object_string_add(json_neighbor, "state",
msgbuf);
+ json_object_string_add(
+ json_neighbor, "converged",
+ lookup_msg(ospf_nsm_state_msg,
+ nbr->state, NULL));
+ json_object_string_add(
+ json_neighbor, "role",
+ lookup_msg(ospf_ism_state_msg,
+ ospf_nbr_ism_state(nbr),
+ NULL));
+
if (nbr->t_inactivity) {
long time_store;