mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-05-30 00:50:03 +00:00
[ospfd] Move passive interface check
* ospf_packet.c: Apply passive check and drop for all packages and not just Hellos. Signed-off-by: Paul Jakma <paul@quagga.net>
This commit is contained in:
parent
0e9de56d5e
commit
491eddc20e
@ -765,24 +765,6 @@ ospf_hello (struct ip *iph, struct ospf_header *ospfh,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If incoming interface is passive one, ignore Hello. */
|
|
||||||
if (OSPF_IF_PASSIVE_STATUS (oi) == OSPF_IF_PASSIVE) {
|
|
||||||
char buf[3][INET_ADDRSTRLEN];
|
|
||||||
zlog_debug ("ignoring HELLO from router %s sent to %s, "
|
|
||||||
"received on a passive interface, %s",
|
|
||||||
inet_ntop(AF_INET, &ospfh->router_id, buf[0], sizeof(buf[0])),
|
|
||||||
inet_ntop(AF_INET, &iph->ip_dst, buf[1], sizeof(buf[1])),
|
|
||||||
inet_ntop(AF_INET, &oi->address->u.prefix4,
|
|
||||||
buf[2], sizeof(buf[2])));
|
|
||||||
if (iph->ip_dst.s_addr == htonl(OSPF_ALLSPFROUTERS))
|
|
||||||
{
|
|
||||||
/* Try to fix multicast membership. */
|
|
||||||
OI_MEMBER_JOINED(oi, MEMBER_ALLROUTERS);
|
|
||||||
ospf_if_set_multicast(oi);
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* get neighbor prefix. */
|
/* get neighbor prefix. */
|
||||||
p.family = AF_INET;
|
p.family = AF_INET;
|
||||||
p.prefixlen = ip_masklen (hello->network_mask);
|
p.prefixlen = ip_masklen (hello->network_mask);
|
||||||
@ -2393,6 +2375,32 @@ ospf_read (struct thread *thread)
|
|||||||
/* associate packet with ospf interface */
|
/* associate packet with ospf interface */
|
||||||
oi = ospf_if_lookup_recv_if (ospf, iph->ip_src);
|
oi = ospf_if_lookup_recv_if (ospf, iph->ip_src);
|
||||||
|
|
||||||
|
/* If incoming interface is passive one, ignore it. */
|
||||||
|
if (oi && OSPF_IF_PASSIVE_STATUS (oi) == OSPF_IF_PASSIVE)
|
||||||
|
{
|
||||||
|
char buf[3][INET_ADDRSTRLEN];
|
||||||
|
|
||||||
|
if (IS_DEBUG_OSPF_EVENT)
|
||||||
|
zlog_debug ("ignoring packet from router %s sent to %s, "
|
||||||
|
"received on a passive interface, %s",
|
||||||
|
inet_ntop(AF_INET, &ospfh->router_id, buf[0], sizeof(buf[0])),
|
||||||
|
inet_ntop(AF_INET, &iph->ip_dst, buf[1], sizeof(buf[1])),
|
||||||
|
inet_ntop(AF_INET, &oi->address->u.prefix4,
|
||||||
|
buf[2], sizeof(buf[2])));
|
||||||
|
|
||||||
|
if (iph->ip_dst.s_addr == htonl(OSPF_ALLSPFROUTERS))
|
||||||
|
{
|
||||||
|
/* Try to fix multicast membership.
|
||||||
|
* Some OS:es may have problems in this area,
|
||||||
|
* make sure it is removed.
|
||||||
|
*/
|
||||||
|
OI_MEMBER_JOINED(oi, MEMBER_ALLROUTERS);
|
||||||
|
ospf_if_set_multicast(oi);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* if no local ospf_interface,
|
/* if no local ospf_interface,
|
||||||
* or header area is backbone but ospf_interface is not
|
* or header area is backbone but ospf_interface is not
|
||||||
* check for VLINK interface
|
* check for VLINK interface
|
||||||
|
Loading…
Reference in New Issue
Block a user