summaryrefslogtreecommitdiff
path: root/usr.sbin/ospfd/neighbor.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/ospfd/neighbor.c')
-rw-r--r--usr.sbin/ospfd/neighbor.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/usr.sbin/ospfd/neighbor.c b/usr.sbin/ospfd/neighbor.c
index aa15490b327..68872cd5142 100644
--- a/usr.sbin/ospfd/neighbor.c
+++ b/usr.sbin/ospfd/neighbor.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: neighbor.c,v 1.7 2005/02/09 16:08:06 claudio Exp $ */
+/* $OpenBSD: neighbor.c,v 1.8 2005/02/09 16:14:23 claudio Exp $ */
/*
* Copyright (c) 2005 Claudio Jeker <claudio@openbsd.org>
@@ -654,7 +654,20 @@ nbr_to_ctl(struct nbr *nbr)
nctl.ls_retrans_lst_cnt++;
nctl.nbr_state = nbr->state;
- nctl.iface_state = nbr->iface->state;
+
+ /*
+ * We need to trick a bit to show the remote iface state.
+ * The idea is to print DR, BDR or DROther dependent on
+ * the type of the neighbor.
+ */
+ if (nbr->iface->dr == nbr)
+ nctl.iface_state = IF_STA_DR;
+ else if (nbr->iface->bdr == nbr)
+ nctl.iface_state = IF_STA_BACKUP;
+ else if (nbr->iface->state & IF_STA_MULTI)
+ nctl.iface_state = IF_STA_DROTHER;
+ else
+ nctl.iface_state = nbr->iface->state;
nctl.state_chng_cnt = nbr->stats.sta_chng;