mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-12-22 09:41:54 +00:00
OSPF: Reject DBDES packets with non-matching MTU
As it is specified in RFC 2328. The old code just provided warning.
This commit is contained in:
parent
ccee5a863e
commit
2bbd72863f
@ -340,6 +340,17 @@ ospf_receive_dbdes(struct ospf_packet *pkt, struct ospf_iface *ifa,
|
||||
rcv_ddseq = ntohl(ps->ddseq);
|
||||
}
|
||||
|
||||
/* Reject packets with non-matching MTU */
|
||||
if ((ifa->type != OSPF_IT_VLINK) &&
|
||||
(rcv_iface_mtu != ifa->iface->mtu) &&
|
||||
(rcv_iface_mtu != 0) && (ifa->iface->mtu != 0))
|
||||
{
|
||||
LOG_PKT("MTU mismatch with nbr %R on %s (remote %d, local %d)",
|
||||
n->rid, ifa->ifname, rcv_iface_mtu, ifa->iface->mtu);
|
||||
STATS2(bad_dbdes, dropped);
|
||||
return;
|
||||
}
|
||||
|
||||
switch (n->state)
|
||||
{
|
||||
case NEIGHBOR_DOWN:
|
||||
@ -355,13 +366,6 @@ ospf_receive_dbdes(struct ospf_packet *pkt, struct ospf_iface *ifa,
|
||||
/* fallthrough */
|
||||
|
||||
case NEIGHBOR_EXSTART:
|
||||
if ((ifa->type != OSPF_IT_VLINK) &&
|
||||
(rcv_iface_mtu != ifa->iface->mtu) &&
|
||||
(rcv_iface_mtu != 0) &&
|
||||
(ifa->iface->mtu != 0))
|
||||
LOG_PKT_WARN("MTU mismatch with nbr %R on %s (remote %d, local %d)",
|
||||
n->rid, ifa->ifname, rcv_iface_mtu, ifa->iface->mtu);
|
||||
|
||||
if (((rcv_imms & DBDES_IMMS) == DBDES_IMMS) &&
|
||||
(n->rid > p->router_id) &&
|
||||
(plen == ospf_dbdes_hdrlen(p)))
|
||||
|
Loading…
Reference in New Issue
Block a user