From d1d1144bd70da4d7381554137fcb4a86864c8fa4 Mon Sep 17 00:00:00 2001 From: Jun-ichiro itojun Hagino Date: Tue, 15 Aug 2000 07:34:08 +0000 Subject: [PATCH] repair endianness issue in IN_MULTICAST(). again, *BSD difference... From: Nick Sayer --- sys/net/if_stf.c | 4 ++-- sys/net/net_osdep.h | 6 +++++- sys/netinet/in_gif.c | 4 ++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/sys/net/if_stf.c b/sys/net/if_stf.c index c95aaa54ec0..bfd462a777f 100644 --- a/sys/net/if_stf.c +++ b/sys/net/if_stf.c @@ -1,5 +1,5 @@ /* $FreeBSD$ */ -/* $KAME: if_stf.c,v 1.40 2000/06/20 19:44:42 itojun Exp $ */ +/* $KAME: if_stf.c,v 1.42 2000/08/15 07:24:23 itojun Exp $ */ /* * Copyright (C) 2000 WIDE Project. @@ -408,7 +408,7 @@ stf_checkaddr4(in, ifp) * reject packets with the following address: * 224.0.0.0/4 0.0.0.0/8 127.0.0.0/8 255.0.0.0/8 */ - if (IN_MULTICAST(in->s_addr)) + if (IN_MULTICAST(ntohl(in->s_addr))) return -1; switch ((ntohl(in->s_addr) & 0xff000000) >> 24) { case 0: case 127: case 255: diff --git a/sys/net/net_osdep.h b/sys/net/net_osdep.h index 47f52161f1e..fc77022e27b 100644 --- a/sys/net/net_osdep.h +++ b/sys/net/net_osdep.h @@ -1,5 +1,5 @@ /* $FreeBSD$ */ -/* $KAME: net_osdep.h,v 1.21 2000/07/02 23:34:38 itojun Exp $ */ +/* $KAME: net_osdep.h,v 1.22 2000/08/15 07:23:10 itojun Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -150,6 +150,10 @@ * FreeBSD4: opt_{inet,inet6,ipsec,ip6fw,altq}.h * NetBSD: opt_{inet,ipsec,altq}.h * others: does not use defopt + * + * - IN_MULTICAST/IN_CLASS[A-D] macro. + * OpenBSD and NetBSD: net endian (kernel) or host endian (userland) + * others: always host endian */ #ifndef __NET_NET_OSDEP_H_DEFINED_ diff --git a/sys/netinet/in_gif.c b/sys/netinet/in_gif.c index 2335873bbb3..bce267cde19 100644 --- a/sys/netinet/in_gif.c +++ b/sys/netinet/in_gif.c @@ -1,5 +1,5 @@ /* $FreeBSD$ */ -/* $KAME: in_gif.c,v 1.43 2000/06/20 19:45:00 itojun Exp $ */ +/* $KAME: in_gif.c,v 1.44 2000/08/15 07:24:24 itojun Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -347,7 +347,7 @@ gif_encapcheck4(m, off, proto, arg) return 0; /* martian filters on outer source - NOT done in ip_input! */ - if (IN_MULTICAST(ip.ip_src.s_addr)) + if (IN_MULTICAST(ntohl(ip.ip_src.s_addr))) return 0; switch ((ntohl(ip.ip_src.s_addr) & 0xff000000) >> 24) { case 0: case 127: case 255: