* ospf_zebra.c: (ospf_distribute_check_connected) check to make filter out
routes matching connected routes was matching against OSPF networks, which
can be far more general than the actual connected interfaces. Fix.
int
ospf_distribute_check_connected (struct ospf *ospf, struct external_info *ei)
{
- struct route_node *rn;
+ struct listnode *node;
+ struct ospf_interface *oi;
- for (rn = route_top (ospf->networks); rn; rn = route_next (rn))
- if (rn->info != NULL)
- if (prefix_match (&rn->p, (struct prefix *) &ei->p))
- {
- route_unlock_node (rn);
- return 0;
- }
+ for (ALL_LIST_ELEMENTS_RO (ospf->oiflist, node, oi))
+ if (prefix_match (oi->address, (struct prefix *) &ei->p))
+ return 0;
return 1;
}