summaryrefslogtreecommitdiffstats
path: root/usr.sbin/ospfd/database.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/ospfd/database.c')
-rw-r--r--usr.sbin/ospfd/database.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/usr.sbin/ospfd/database.c b/usr.sbin/ospfd/database.c
index f3641c31f6d..80f5e0cede0 100644
--- a/usr.sbin/ospfd/database.c
+++ b/usr.sbin/ospfd/database.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: database.c,v 1.28 2011/03/04 09:24:46 claudio Exp $ */
+/* $OpenBSD: database.c,v 1.29 2011/05/09 12:24:41 claudio Exp $ */
/*
* Copyright (c) 2005 Claudio Jeker <claudio@openbsd.org>
@@ -138,7 +138,8 @@ send_db_description(struct nbr *nbr)
fatalx("send_db_description: unknown interface type");
}
- dd_hdr.opts = area_ospf_options(nbr->iface->area);
+ /* XXX button or not for opaque LSA? */
+ dd_hdr.opts = area_ospf_options(nbr->iface->area) | OSPF_OPTION_O;
dd_hdr.bits = bits;
dd_hdr.dd_seq_num = htonl(nbr->dd_seq_num);
@@ -211,6 +212,13 @@ recv_db_description(struct nbr *nbr, char *buf, u_int16_t len)
case NBR_STA_XSTRT:
if (dupe)
return;
+ nbr->capa_options = dd_hdr.opts;
+ if ((nbr->capa_options & nbr->options) != nbr->options) {
+ log_warnx("recv_db_description: neighbor ID %s "
+ "sent inconsistent options %x vs. %x",
+ inet_ntoa(nbr->id), nbr->capa_options,
+ nbr->options);
+ }
/*
* check bits: either I,M,MS or only M
*/