From 7969ea3b41db05294c78a5e0ec0bd3c29ae8c549 Mon Sep 17 00:00:00 2001 From: Ondrej Zajicek Date: Sun, 11 Apr 2010 10:19:54 +0200 Subject: Fixes a bug in OSPF on NBMA interfaces. A very tricky bug. OSPF on NBMA interfaces probably never really worked. When a packet was sent to multiple destinations, the checksum was calculated multiple times from a packet with already filled checksum field (from previous calculation). Therefore, many packets were sent with an invalid checksum. --- proto/ospf/packet.c | 1 + 1 file changed, 1 insertion(+) diff --git a/proto/ospf/packet.c b/proto/ospf/packet.c index b47cbfc7..e78eeea5 100644 --- a/proto/ospf/packet.c +++ b/proto/ospf/packet.c @@ -76,6 +76,7 @@ ospf_pkt_finalize(struct ospf_iface *ifa, struct ospf_packet *pkt) } password_cpy(pkt->u.password, passwd->password, sizeof(union ospf_auth)); case OSPF_AUTH_NONE: + pkt->checksum = 0; pkt->checksum = ipsum_calculate(pkt, sizeof(struct ospf_packet) - sizeof(union ospf_auth), (pkt + 1), ntohs(pkt->length) - -- cgit v1.2.3