[PATCH] fix HIPQUAD macro in kernel.h

STALE8787d

4 messages, 3 authors, 2002-08-08 · open the first message on its own page

[PATCH] fix HIPQUAD macro in kernel.h

From: Harald Welte <laforge@gnumonks.org>
Date: 2002-08-08 11:27:44

Hi Dave!

Below is a fix for the HIPQUAD macro in kernel.h.  The macro is currently
not endian-aware - it just assumes running on a little-endian machine.

If you don't like the #ifdefs in kernel.h, the macros could be moved into 
include/linux/byteorder/.

Please apply, thanks
--- linux-2.4.19-rc5-plain/include/linux/kernel.h	Wed Aug  7 22:55:03 2002
+++ linux-2.4.19-rc5-endian/include/linux/kernel.h	Thu Aug  8 11:34:13 2002
@@ -12,6 +12,7 @@
 #include <linux/stddef.h>
 #include <linux/types.h>
 #include <linux/compiler.h>
+#include <asm/byteorder.h>
 
 /* Optimization barrier */
 /* The "volatile" is due to gcc bugs */
@@ -128,11 +129,17 @@
 	((unsigned char *)&addr)[2], \
 	((unsigned char *)&addr)[3]
 
+#if defined(__LITTLE_ENDIAN)
 #define HIPQUAD(addr) \
 	((unsigned char *)&addr)[3], \
 	((unsigned char *)&addr)[2], \
 	((unsigned char *)&addr)[1], \
 	((unsigned char *)&addr)[0]
+#elif defined(__BIG_ENDIAN)
+#define HIPQUAD	NIPQUAD
+#else
+#error "Please fix asm/byteorder.h"
+#endif /* __LITTLE_ENDIAN */
 
 /*
  * min()/max() macros that also do
-- 
Live long and prosper
- Harald Welte / laforge@gnumonks.org               http://www.gnumonks.org/
============================================================================
GCS/E/IT d- s-: a-- C+++ UL++++$ P+++ L++++$ E--- W- N++ o? K- w--- O- M+ 
V-- PS++ PE-- Y++ PGP++ t+ 5-- !X !R tv-- b+++ !DI !D G+ e* h--- r++ y+(*)

Re: [PATCH] fix HIPQUAD macro in kernel.h

From: Andi Kleen <hidden>
Date: 2002-08-08 11:37:35

On Thu, Aug 08, 2002 at 01:31:12PM +0200, Harald Welte wrote:
Hi Dave!

Below is a fix for the HIPQUAD macro in kernel.h.  The macro is currently
not endian-aware - it just assumes running on a little-endian machine.

If you don't like the #ifdefs in kernel.h, the macros could be moved into 
include/linux/byteorder/.

Please apply, thanks
That change is wrong. IP address should be always in network order (=BE) 
while in kernel.

-Andi

Re: [PATCH] fix HIPQUAD macro in kernel.h

From: David S. Miller <hidden>
Date: 2002-08-08 14:58:12

   From: Andi Kleen [off-list ref]
   Date: Thu, 8 Aug 2002 13:41:13 +0200
   
   That change is wrong. IP address should be always in network order
   (=BE) while in kernel.

He's fixing the HIPQUAD ('H' as in 'host') not NIPQUAD ('N' as in
'network') macro.

If you disagree with people using HIPQUAD at all, recommend that
it be deleted.  Until then, it ought to be fixed :-)

Re: [PATCH] fix HIPQUAD macro in kernel.h

From: David S. Miller <hidden>
Date: 2002-08-08 15:07:31

   From: Harald Welte [off-list ref]
   Date: Thu, 8 Aug 2002 13:31:12 +0200

   Below is a fix for the HIPQUAD macro in kernel.h.  The macro is currently
   not endian-aware - it just assumes running on a little-endian machine.
   
This looks fine, I've added it to both my 2.4.x and 2.5.x
networking trees.

Thanks.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help