summaryrefslogtreecommitdiff
path: root/ospfd/ospfd.c
diff options
context:
space:
mode:
authorhasso <hasso>2004-10-19 19:44:43 +0000
committerhasso <hasso>2004-10-19 19:44:43 +0000
commit3fb9cd6ef456959b6eff939d5c316f6785c2dda4 (patch)
treee350cb3ef7b20b8bbccfb1aa9309152311e845bd /ospfd/ospfd.c
parent5ae35f45f1292dce3a01f241accafeb2e59b10cc (diff)
OK. Here it is - PtP patch from Andrew J. Schorr. No problems with ospfd,
ripd might need some more testing though.
Diffstat (limited to 'ospfd/ospfd.c')
-rw-r--r--ospfd/ospfd.c34
1 files changed, 10 insertions, 24 deletions
diff --git a/ospfd/ospfd.c b/ospfd/ospfd.c
index 0a988e0f..054c3316 100644
--- a/ospfd/ospfd.c
+++ b/ospfd/ospfd.c
@@ -686,31 +686,17 @@ ospf_network_match_iface(struct connected *co, struct prefix *net)
* PtP special case: network specified == iface peer addr -> ospf
*/
- /* For PtP, match if peer address matches network address exactly.
- * This can be addr/32 or addr/p for p < 32, but the addr must match
- * exactly; this is not a test for falling within the prefix. This
+ /* For PtP, match if peer address matches network address exactly
+ * in situations where the peer address is available and the prefix
+ * length is 32 (i.e. a dedicated subnet has not been assigned).
+ * This is not a test for falling within the prefix. This
* test is solely for compatibility with zebra.
- */
- if (if_is_pointopoint (co->ifp) &&
- IPV4_ADDR_SAME ( &(co->destination->u.prefix4), &(net->u.prefix4)))
- return 1;
-
-#if 0
- /* Decline to accept PtP if dst address does not match the
- * prefix. (ifdefed out because this is a workaround, not the
- * desired behavior.) */
- if (if_is_pointopoint (co->ifp) &&
- ! prefix_match (net, co->destination))
- return 0;
-#endif
-
- /* If the address is within the prefix, accept. Note that this
- * applies to PtP as well as other types.
+ *
+ * If not PtP, accept if the address is within the prefix.
*/
- if (prefix_match (net, co->address))
- return 1;
-
- return 0; /* no match */
+ return CONNECTED_POINTOPOINT_HOST(co) ?
+ IPV4_ADDR_SAME ( &(co->destination->u.prefix4), &(net->u.prefix4)) :
+ prefix_match (net, co->address);
}
void
@@ -748,7 +734,7 @@ ospf_network_run (struct ospf *ospf, struct prefix *p, struct ospf_area *area)
if (CHECK_FLAG(co->flags,ZEBRA_IFA_SECONDARY))
continue;
- if (if_is_pointopoint (co->ifp))
+ if (CONNECTED_POINTOPOINT_HOST(co))
addr = co->destination;
else
addr = co->address;