diff options
Diffstat (limited to 'proto/ospf')
-rw-r--r-- | proto/ospf/iface.c | 6 | ||||
-rw-r--r-- | proto/ospf/packet.c | 1 |
2 files changed, 6 insertions, 1 deletions
diff --git a/proto/ospf/iface.c b/proto/ospf/iface.c index 9b65961..e98414f 100644 --- a/proto/ospf/iface.c +++ b/proto/ospf/iface.c @@ -89,6 +89,12 @@ ospf_open_socket(struct ospf_iface *ifa, int mc) if (sk_open(ipsk) != 0) goto err; +#ifdef OSPFv3 + /* 12 is an offset of the checksum in an OSPF packet */ + if (sk_set_ipv6_checksum(ipsk, 12) < 0) + goto err; +#endif + if (mc) { if (sk_setup_multicast(ipsk) < 0) diff --git a/proto/ospf/packet.c b/proto/ospf/packet.c index 9422a9f..94ec010 100644 --- a/proto/ospf/packet.c +++ b/proto/ospf/packet.c @@ -320,7 +320,6 @@ ospf_rx_hook(sock * sk, int size) return 1; } - /* FIXME - handle checksums in OSPFv3 */ #ifdef OSPFv2 if ((ps->autype != htons(OSPF_AUTH_CRYPT)) && (!ipsum_verify(ps, 16, (void *) ps + sizeof(struct ospf_packet), |