4285b394ae
routing protocol.
26 lines
940 B
C
26 lines
940 B
C
--- ospfd/packet.c.orig 9 Mar 2006 13:31:57 -0000 1.20
|
|
+++ ospfd/packet.c 16 Mar 2006 18:21:38 -0000
|
|
@@ -34,7 +34,7 @@
|
|
#include "log.h"
|
|
#include "ospfe.h"
|
|
|
|
-int ip_hdr_sanity_check(const struct ip *, u_int16_t);
|
|
+int ip_hdr_sanity_check(struct ip *, u_int16_t);
|
|
int ospf_hdr_sanity_check(const struct ip *,
|
|
struct ospf_hdr *, u_int16_t, const struct iface *);
|
|
struct iface *find_iface(struct ospfd_conf *, struct in_addr);
|
|
@@ -196,8 +196,13 @@ recv_packet(int fd, short event, void *b
|
|
}
|
|
|
|
int
|
|
-ip_hdr_sanity_check(const struct ip *ip_hdr, u_int16_t len)
|
|
+ip_hdr_sanity_check(struct ip *ip_hdr, u_int16_t len)
|
|
{
|
|
+#if defined(__NetBSD__) || defined(__FreeBSD__)
|
|
+ /* FreeBSD and NetBSD modify the IP header. Undo it! */
|
|
+ ip_hdr->ip_len = htons(ip_hdr->ip_len + (ip_hdr->ip_hl << 2));
|
|
+#endif
|
|
+
|
|
if (ntohs(ip_hdr->ip_len) != len) {
|
|
log_debug("recv_packet: invalid IP packet length %u",
|
|
ntohs(ip_hdr->ip_len));
|