mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-12-22 09:41:54 +00:00
Adds warning for mismatch MTU in OSPF packets.
Thanks Alexander V. Chernikov for the original patch.
This commit is contained in:
parent
2f9955b5d5
commit
9f1500f50a
@ -96,7 +96,7 @@ ospf_dbdes_send(struct ospf_neighbor *n, int next)
|
|||||||
pkt = ospf_tx_buffer(ifa);
|
pkt = ospf_tx_buffer(ifa);
|
||||||
op = &pkt->ospf_packet;
|
op = &pkt->ospf_packet;
|
||||||
ospf_pkt_fill_hdr(ifa, pkt, DBDES_P);
|
ospf_pkt_fill_hdr(ifa, pkt, DBDES_P);
|
||||||
pkt->iface_mtu = htons(ifa->iface->mtu);
|
pkt->iface_mtu = (ifa->type == OSPF_IT_VLINK) ? 0 : htons(ifa->iface->mtu);
|
||||||
pkt->options = hton_opt(oa->options);
|
pkt->options = hton_opt(oa->options);
|
||||||
pkt->imms = n->myimms;
|
pkt->imms = n->myimms;
|
||||||
pkt->ddseq = htonl(n->dds);
|
pkt->ddseq = htonl(n->dds);
|
||||||
@ -119,7 +119,7 @@ ospf_dbdes_send(struct ospf_neighbor *n, int next)
|
|||||||
op = (struct ospf_packet *) pkt;
|
op = (struct ospf_packet *) pkt;
|
||||||
|
|
||||||
ospf_pkt_fill_hdr(ifa, pkt, DBDES_P);
|
ospf_pkt_fill_hdr(ifa, pkt, DBDES_P);
|
||||||
pkt->iface_mtu = htons(ifa->iface->mtu);
|
pkt->iface_mtu = (ifa->type == OSPF_IT_VLINK) ? 0 : htons(ifa->iface->mtu);
|
||||||
pkt->ddseq = htonl(n->dds);
|
pkt->ddseq = htonl(n->dds);
|
||||||
pkt->options = hton_opt(oa->options);
|
pkt->options = hton_opt(oa->options);
|
||||||
|
|
||||||
@ -260,6 +260,7 @@ ospf_dbdes_receive(struct ospf_packet *ps_i, struct ospf_iface *ifa,
|
|||||||
struct ospf_dbdes_packet *ps = (void *) ps_i;
|
struct ospf_dbdes_packet *ps = (void *) ps_i;
|
||||||
u32 ps_ddseq = ntohl(ps->ddseq);
|
u32 ps_ddseq = ntohl(ps->ddseq);
|
||||||
u32 ps_options = ntoh_opt(ps->options);
|
u32 ps_options = ntoh_opt(ps->options);
|
||||||
|
u16 ps_iface_mtu = ntohs(ps->iface_mtu);
|
||||||
|
|
||||||
OSPF_PACKET(ospf_dump_dbdes, ps, "DBDES packet received from %I via %s", n->ip, ifa->iface->name);
|
OSPF_PACKET(ospf_dump_dbdes, ps, "DBDES packet received from %I via %s", n->ip, ifa->iface->name);
|
||||||
|
|
||||||
@ -277,6 +278,12 @@ ospf_dbdes_receive(struct ospf_packet *ps_i, struct ospf_iface *ifa,
|
|||||||
if (n->state != NEIGHBOR_EXSTART)
|
if (n->state != NEIGHBOR_EXSTART)
|
||||||
return;
|
return;
|
||||||
case NEIGHBOR_EXSTART:
|
case NEIGHBOR_EXSTART:
|
||||||
|
|
||||||
|
if ((ps_iface_mtu != ifa->iface->mtu) && (ifa->type != OSPF_IT_VLINK)
|
||||||
|
&& (ps_iface_mtu != 0) && (ifa->iface->mtu != 0))
|
||||||
|
log(L_WARN "OSPF: MTU mismatch with neighbour %I on interface %s (remote %d, local %d)",
|
||||||
|
n->ip, ifa->iface->name, ps_iface_mtu, ifa->iface->mtu);
|
||||||
|
|
||||||
if ((ps->imms.bit.m && ps->imms.bit.ms && ps->imms.bit.i)
|
if ((ps->imms.bit.m && ps->imms.bit.ms && ps->imms.bit.i)
|
||||||
&& (n->rid > po->router_id) && (size == sizeof(struct ospf_dbdes_packet)))
|
&& (n->rid > po->router_id) && (size == sizeof(struct ospf_dbdes_packet)))
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user