diff options
-rw-r--r-- | Source/charon/definitions.h | 51 |
1 files changed, 50 insertions, 1 deletions
diff --git a/Source/charon/definitions.h b/Source/charon/definitions.h index 0392f2295..9909cc98a 100644 --- a/Source/charon/definitions.h +++ b/Source/charon/definitions.h @@ -8,7 +8,8 @@ /* * Copyright (C) 2005 Jan Hutter, Martin Willi * Hochschule fuer Technik Rapperswil - * + * Copyright (C) 1998, 1999 D. Hugh Redelmeier. (Endian stuff) + * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your @@ -23,6 +24,54 @@ #ifndef DEFINITIONS_H_ #define DEFINITIONS_H_ + + +/* stolen from strongswan */ +#if linux +# if defined(i386) && !defined(__i386__) +# define __i386__ 1 +# define MYHACKFORTHIS 1 +# endif +# include <endian.h> +# ifdef MYHACKFORTHIS +# undef __i386__ +# undef MYHACKFORTHIS +# endif +#elif !(defined(BIG_ENDIAN) && defined(LITTLE_ENDIAN) && defined(BYTE_ORDER)) + /* we don't know how to do this, so we require the macros to be defined + * with compiler flags: + * -DBIG_ENDIAN=4321 -DLITTLE_ENDIAN=1234 -DBYTE_ORDER=BIG_ENDIAN + * or -DBIG_ENDIAN=4321 -DLITTLE_ENDIAN=1234 -DBYTE_ORDER=LITTLE_ENDIAN + * Thse match the GNU definitions + */ +# include <sys/endian.h> +#endif + +#ifndef BIG_ENDIAN + #error "BIG_ENDIAN must be defined" +#endif + +#ifndef LITTLE_ENDIAN + #error "LITTLE_ENDIAN must be defined" +#endif + +#ifndef BYTE_ORDER + #error "BYTE_ORDER must be defined" +#endif + +/** + * macro gives back larger of two values + */ +#define max(x,y) (x > y ? x : y) + + +/** + * macro gives back smaller of two values + */ +#define min(x,y) (x < y ? x : y) + + + #define MAPPING_END (-1) /** |