2004-11-04 Paul Jakma <paul@dishone.st>

* ospfd.c: (ospf_network_match_iface) revert to previous network
          statement match behaviour.
This commit is contained in:
paul 2004-11-04 20:35:31 +00:00
parent 49ff6d9d7a
commit f3ae74cdf0
2 changed files with 28 additions and 9 deletions

View File

@ -1,3 +1,8 @@
2004-11-04 Paul Jakma <paul@dishone.st>
* ospfd.c: (ospf_network_match_iface) revert to previous network
statement match behaviour.
2004-11-02 Paul Jakma <paul@dishone.st>
* ospf_packet.c: (ospf_write_frags) remove iov arg, msg already points

View File

@ -686,17 +686,31 @@ 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
* 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
/* 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
* test is solely for compatibility with zebra.
*
* If not PtP, accept if the address is within the prefix.
*/
return CONNECTED_POINTOPOINT_HOST(co) ?
IPV4_ADDR_SAME ( &(co->destination->u.prefix4), &(net->u.prefix4)) :
prefix_match (net, co->address);
if (if_is_pointopoint (co->ifp) && co->destination &&
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 (prefix_match (net, co->address))
return 1;
return 0; /* no match */
}
void