summaryrefslogtreecommitdiffstats
path: root/proto/ospf/lsupd.c
diff options
context:
space:
mode:
authorOndrej Zajicek <santiago@crfreenet.org>2010-12-24 18:08:07 +0100
committerOndrej Zajicek <santiago@crfreenet.org>2010-12-24 18:08:07 +0100
commit919f5411c48f509a49400a1293e670f5d5d2bcf1 (patch)
tree0701f270439c2e71a017c75f3095367db724ca8e /proto/ospf/lsupd.c
parent39847cda73d8e8536300b74d90d01b6e2f233ef7 (diff)
downloadbird-919f5411c48f509a49400a1293e670f5d5d2bcf1.tar
bird-919f5411c48f509a49400a1293e670f5d5d2bcf1.zip
Implements Point-to-MultiPoint interface type for OSPF.
Diffstat (limited to 'proto/ospf/lsupd.c')
-rw-r--r--proto/ospf/lsupd.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/proto/ospf/lsupd.c b/proto/ospf/lsupd.c
index fb757d0..06b62ae 100644
--- a/proto/ospf/lsupd.c
+++ b/proto/ospf/lsupd.c
@@ -304,6 +304,13 @@ ospf_lsupd_flood(struct proto_ospf *po,
switch (ifa->type)
{
+ case OSPF_IT_BCAST:
+ if ((ifa->state == OSPF_IS_BACKUP) || (ifa->state == OSPF_IS_DR))
+ ospf_send_to(ifa, AllSPFRouters);
+ else
+ ospf_send_to(ifa, AllDRouters);
+ break;
+
case OSPF_IT_NBMA:
if ((ifa->state == OSPF_IS_BACKUP) || (ifa->state == OSPF_IS_DR))
ospf_send_to_agt(ifa, NEIGHBOR_EXCHANGE);
@@ -311,16 +318,20 @@ ospf_lsupd_flood(struct proto_ospf *po,
ospf_send_to_bdr(ifa);
break;
+ case OSPF_IT_PTP:
+ ospf_send_to(ifa, AllSPFRouters);
+ break;
+
+ case OSPF_IT_PTMP:
+ ospf_send_to_agt(ifa, NEIGHBOR_EXCHANGE);
+ break;
+
case OSPF_IT_VLINK:
ospf_send_to(ifa, ifa->vip);
break;
default:
- if ((ifa->state == OSPF_IS_BACKUP) || (ifa->state == OSPF_IS_DR) ||
- (ifa->type == OSPF_IT_PTP))
- ospf_send_to(ifa, AllSPFRouters);
- else
- ospf_send_to(ifa, AllDRouters);
+ bug("Bug in ospf_lsupd_flood()");
}
}
}