From 267da8138d7f429941f2d829b44cf9bdd94a14d6 Mon Sep 17 00:00:00 2001 From: "Ondrej Zajicek (work)" Date: Sun, 3 Feb 2019 15:45:43 +0100 Subject: [PATCH] OSPF: Reject DBDES packets with non-matching MTU As it is specified in RFC 2328. The old code just provided warning. --- proto/ospf/dbdes.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/proto/ospf/dbdes.c b/proto/ospf/dbdes.c index 34665dad..4d3bbe8c 100644 --- a/proto/ospf/dbdes.c +++ b/proto/ospf/dbdes.c @@ -342,6 +342,16 @@ 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); + return; + } + switch (n->state) { case NEIGHBOR_DOWN: @@ -357,13 +367,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)))