From e6ea2e375e4c547ca1b6fc9c313c2b7940acbd77 Mon Sep 17 00:00:00 2001 From: Ondrej Filip Date: Tue, 15 Mar 2005 20:51:33 +0000 Subject: Maximal packet size in virtual links is 576. --- proto/ospf/ospf.h | 1 + proto/ospf/packet.c | 9 ++++++--- 2 files changed, 7 insertions(+), 3 deletions(-) (limited to 'proto') diff --git a/proto/ospf/ospf.h b/proto/ospf/ospf.h index e52a6efb..1bb7f872 100644 --- a/proto/ospf/ospf.h +++ b/proto/ospf/ospf.h @@ -10,6 +10,7 @@ #define _BIRD_OSPF_H_ #define MAXNETS 10 +#define OSPF_VLINK_MTU 576 /* RFC2328 - A.1 */ #undef OSPF_BIG_PACKETS /* * RFC 2328 says, maximum packet size is 65535 * This could be too much for small systems, so I diff --git a/proto/ospf/packet.c b/proto/ospf/packet.c index 443efa06..eba4bc22 100644 --- a/proto/ospf/packet.c +++ b/proto/ospf/packet.c @@ -1,7 +1,7 @@ /* * BIRD -- OSPF * - * (c) 1999--2004 Ondrej Filip + * (c) 1999--2005 Ondrej Filip * * Can be freely distributed and used under the terms of the GNU GPL. */ @@ -31,8 +31,11 @@ ospf_pkt_fill_hdr(struct ospf_iface *ifa, void *buf, u8 h_type) unsigned ospf_pkt_maxsize(struct ospf_iface *ifa) { - return ifa->iface->mtu - SIZE_OF_IP_HEADER - - ((ifa->autype == OSPF_AUTH_CRYPT) ? OSPF_AUTH_CRYPT_SIZE : 0); + unsigned mtu = (ifa->type == OSPF_IT_VLINK) ? OSPF_VLINK_MTU : ifa->iface->mtu; + /* Can be mtu < 576? */ + return ((mtu <= ifa->iface->mtu) ? mtu : ifa->iface->mtu) - + SIZE_OF_IP_HEADER - ((ifa->autype == OSPF_AUTH_CRYPT) ? OSPF_AUTH_CRYPT_SIZE : 0); + /* For virtual links use mtu=576 */ } void -- cgit v1.2.3