diff -urN asterisk/aesopt.h new_asterisk/aesopt.h --- asterisk/aesopt.h 2004-12-14 15:36:29.000000000 -0800 +++ new_asterisk/aesopt.h 2005-03-27 17:13:25.447015976 -0800 @@ -136,6 +136,7 @@ #define _AESOPT_H #include +#include /* CONFIGURATION - USE OF DEFINES @@ -146,27 +147,6 @@ #if clauses. */ -/* PLATFORM SPECIFIC INCLUDES */ - -#if defined( __OpenBSD__ ) -# include -# include -#elif defined( __FreeBSD__ ) || defined( __NetBSD__ ) -# include -# include -#elif defined( BSD ) && ( BSD >= 199103 ) || defined(__APPLE__) -# include -#elif defined ( SOLARIS ) -# include -#elif defined( __GNUC__ ) || defined( __GNU_LIBRARY__ ) -# include -#if !defined(__APPLE__) -# include -#endif -#elif defined( linux ) -# include -#endif - /* BYTE ORDER IN 32-BIT WORDS To obtain the highest speed on processors with 32-bit words, this code diff -urN asterisk/channels/chan_alsa.c new_asterisk/channels/chan_alsa.c --- asterisk/channels/chan_alsa.c 2005-03-23 16:55:40.000000000 -0800 +++ new_asterisk/channels/chan_alsa.c 2005-03-27 17:14:03.337255784 -0800 @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -27,7 +28,6 @@ #include #include #include -#include #define ALSA_PCM_NEW_HW_PARAMS_API #define ALSA_PCM_NEW_SW_PARAMS_API diff -urN asterisk/channels/chan_oss.c new_asterisk/channels/chan_oss.c --- asterisk/channels/chan_oss.c 2005-03-24 14:01:56.000000000 -0800 +++ new_asterisk/channels/chan_oss.c 2005-03-27 17:14:24.166089320 -0800 @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -35,23 +36,6 @@ #include #include -#if defined( __OpenBSD__ ) -# include -#elif defined( __FreeBSD__ ) || defined( __NetBSD__ ) -# include -#elif defined( BSD ) && ( BSD >= 199103 ) || defined(__APPLE__) -# include -#elif defined ( SOLARIS ) -# include -#elif defined( __GNUC__ ) || defined( __GNU_LIBRARY__ ) -# include -#if !defined(__APPLE__) -# include -#endif -#elif defined( linux ) -# include -#endif - #ifdef __linux #include #elif defined(__FreeBSD__) diff -urN asterisk/channels/iax2-parser.c new_asterisk/channels/iax2-parser.c --- asterisk/channels/iax2-parser.c 2005-03-17 15:12:15.000000000 -0800 +++ new_asterisk/channels/iax2-parser.c 2005-03-27 17:11:40.673943904 -0800 @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -30,22 +31,6 @@ static int iframes = 0; static int oframes = 0; -#if defined(SOLARIS) && defined(__sparc__) -static unsigned int get_uint32(unsigned char *p) -{ - return (p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3]; -} - -static unsigned short get_uint16(unsigned char *p) -{ - return (p[0] << 8) | p[1] ; -} - -#else -#define get_uint32(p) (*((unsigned int *)(p))) -#define get_uint16(p) (*((unsigned short *)(p))) -#endif - static void internaloutput(const char *str) { fputs(str, stdout); @@ -102,7 +87,7 @@ static void dump_int(char *output, int maxlen, void *value, int len) { if (len == (int)sizeof(unsigned int)) - snprintf(output, maxlen, "%lu", (unsigned long)ntohl(get_uint32(value))); + snprintf(output, maxlen, "%lu", (unsigned long)ntohl(get_unaligned_uint32(value))); else snprintf(output, maxlen, "Invalid INT"); } @@ -110,7 +95,7 @@ static void dump_short(char *output, int maxlen, void *value, int len) { if (len == (int)sizeof(unsigned short)) - snprintf(output, maxlen, "%d", ntohs(get_uint16(value))); + snprintf(output, maxlen, "%d", ntohs(get_unaligned_uint16(value))); else snprintf(output, maxlen, "Invalid SHORT"); } @@ -140,8 +125,8 @@ { char buf[256] = ""; if (len == (int)sizeof(unsigned int)) - snprintf(output, maxlen, "%lu (%s)", (unsigned long)ntohl(get_uint32(value)), - iax_provflags2str(buf, sizeof(buf), ntohl(get_uint32(value)))); + snprintf(output, maxlen, "%lu (%s)", (unsigned long)ntohl(get_unaligned_uint32(value)), + iax_provflags2str(buf, sizeof(buf), ntohl(get_unaligned_uint32(value)))); else snprintf(output, maxlen, "Invalid INT"); } @@ -600,14 +585,14 @@ snprintf(tmp, (int)sizeof(tmp), "Expecting capability to be %d bytes long but was %d\n", (int)sizeof(unsigned int), len); errorf(tmp); } else - ies->capability = ntohl(get_uint32(data + 2)); + ies->capability = ntohl(get_unaligned_uint32(data + 2)); break; case IAX_IE_FORMAT: if (len != (int)sizeof(unsigned int)) { snprintf(tmp, (int)sizeof(tmp), "Expecting format to be %d bytes long but was %d\n", (int)sizeof(unsigned int), len); errorf(tmp); } else - ies->format = ntohl(get_uint32(data + 2)); + ies->format = ntohl(get_unaligned_uint32(data + 2)); break; case IAX_IE_LANGUAGE: ies->language = data + 2; @@ -617,21 +602,21 @@ snprintf(tmp, (int)sizeof(tmp), "Expecting version to be %d bytes long but was %d\n", (int)sizeof(unsigned short), len); errorf(tmp); } else - ies->version = ntohs(get_uint16(data + 2)); + ies->version = ntohs(get_unaligned_uint16(data + 2)); break; case IAX_IE_ADSICPE: if (len != (int)sizeof(unsigned short)) { snprintf(tmp, (int)sizeof(tmp), "Expecting adsicpe to be %d bytes long but was %d\n", (int)sizeof(unsigned short), len); errorf(tmp); } else - ies->adsicpe = ntohs(get_uint16(data + 2)); + ies->adsicpe = ntohs(get_unaligned_uint16(data + 2)); break; case IAX_IE_SAMPLINGRATE: if (len != (int)sizeof(unsigned short)) { snprintf(tmp, (int)sizeof(tmp), "Expecting samplingrate to be %d bytes long but was %d\n", (int)sizeof(unsigned short), len); errorf(tmp); } else - ies->samprate = ntohs(get_uint16(data + 2)); + ies->samprate = ntohs(get_unaligned_uint16(data + 2)); break; case IAX_IE_DNID: ies->dnid = data + 2; @@ -644,14 +629,14 @@ snprintf(tmp, (int)sizeof(tmp), "Expecting authmethods to be %d bytes long but was %d\n", (int)sizeof(unsigned short), len); errorf(tmp); } else - ies->authmethods = ntohs(get_uint16(data + 2)); + ies->authmethods = ntohs(get_unaligned_uint16(data + 2)); break; case IAX_IE_ENCRYPTION: if (len != (int)sizeof(unsigned short)) { snprintf(tmp, (int)sizeof(tmp), "Expecting encryption to be %d bytes long but was %d\n", (int)sizeof(unsigned short), len); errorf(tmp); } else - ies->encmethods = ntohs(get_uint16(data + 2)); + ies->encmethods = ntohs(get_unaligned_uint16(data + 2)); break; case IAX_IE_CHALLENGE: ies->challenge = data + 2; @@ -670,21 +655,21 @@ snprintf(tmp, (int)sizeof(tmp), "Expecting refresh to be %d bytes long but was %d\n", (int)sizeof(unsigned short), len); errorf(tmp); } else - ies->refresh = ntohs(get_uint16(data + 2)); + ies->refresh = ntohs(get_unaligned_uint16(data + 2)); break; case IAX_IE_DPSTATUS: if (len != (int)sizeof(unsigned short)) { snprintf(tmp, (int)sizeof(tmp), "Expecting dpstatus to be %d bytes long but was %d\n", (int)sizeof(unsigned short), len); errorf(tmp); } else - ies->dpstatus = ntohs(get_uint16(data + 2)); + ies->dpstatus = ntohs(get_unaligned_uint16(data + 2)); break; case IAX_IE_CALLNO: if (len != (int)sizeof(unsigned short)) { snprintf(tmp, (int)sizeof(tmp), "Expecting callno to be %d bytes long but was %d\n", (int)sizeof(unsigned short), len); errorf(tmp); } else - ies->callno = ntohs(get_uint16(data + 2)); + ies->callno = ntohs(get_unaligned_uint16(data + 2)); break; case IAX_IE_CAUSE: ies->cause = data + 2; @@ -710,7 +695,7 @@ snprintf(tmp, (int)sizeof(tmp), "Expecting msgcount to be %d bytes long but was %d\n", (int)sizeof(unsigned short), len); errorf(tmp); } else - ies->msgcount = ntohs(get_uint16(data + 2)); + ies->msgcount = ntohs(get_unaligned_uint16(data + 2)); break; case IAX_IE_AUTOANSWER: ies->autoanswer = 1; @@ -723,21 +708,21 @@ snprintf(tmp, (int)sizeof(tmp), "Expecting transferid to be %d bytes long but was %d\n", (int)sizeof(unsigned int), len); errorf(tmp); } else - ies->transferid = ntohl(get_uint32(data + 2)); + ies->transferid = ntohl(get_unaligned_uint32(data + 2)); break; case IAX_IE_DATETIME: if (len != (int)sizeof(unsigned int)) { snprintf(tmp, (int)sizeof(tmp), "Expecting date/time to be %d bytes long but was %d\n", (int)sizeof(unsigned int), len); errorf(tmp); } else - ies->datetime = ntohl(get_uint32(data + 2)); + ies->datetime = ntohl(get_unaligned_uint32(data + 2)); break; case IAX_IE_FIRMWAREVER: if (len != (int)sizeof(unsigned short)) { snprintf(tmp, (int)sizeof(tmp), "Expecting firmwarever to be %d bytes long but was %d\n", (int)sizeof(unsigned short), len); errorf(tmp); } else - ies->firmwarever = ntohs(get_uint16(data + 2)); + ies->firmwarever = ntohs(get_unaligned_uint16(data + 2)); break; case IAX_IE_DEVICETYPE: ies->devicetype = data + 2; @@ -750,7 +735,7 @@ snprintf(tmp, (int)sizeof(tmp), "Expected block desc to be %d bytes long but was %d\n", (int)sizeof(unsigned int), len); errorf(tmp); } else - ies->fwdesc = ntohl(get_uint32(data + 2)); + ies->fwdesc = ntohl(get_unaligned_uint32(data + 2)); break; case IAX_IE_FWBLOCKDATA: ies->fwdata = data + 2; @@ -766,7 +751,7 @@ errorf(tmp); } else { ies->provverpres = 1; - ies->provver = ntohl(get_uint32(data + 2)); + ies->provver = ntohl(get_unaligned_uint32(data + 2)); } break; case IAX_IE_CALLINGPRES: @@ -790,14 +775,14 @@ snprintf(tmp, (int)sizeof(tmp), "Expecting callingtns to be %d bytes long but was %d\n", (int)sizeof(unsigned short), len); errorf(tmp); } else - ies->calling_tns = ntohs(get_uint16(data + 2)); + ies->calling_tns = ntohs(get_unaligned_uint16(data + 2)); break; case IAX_IE_RR_JITTER: if (len != (int)sizeof(unsigned int)) { snprintf(tmp, (int)sizeof(tmp), "Expected jitter rr to be %d bytes long but was %d\n", (int)sizeof(unsigned int), len); errorf(tmp); } else { - ies->rr_jitter = ntohl(get_uint32(data + 2)); + ies->rr_jitter = ntohl(get_unaligned_uint32(data + 2)); } break; case IAX_IE_RR_LOSS: @@ -805,7 +790,7 @@ snprintf(tmp, (int)sizeof(tmp), "Expected loss rr to be %d bytes long but was %d\n", (int)sizeof(unsigned int), len); errorf(tmp); } else { - ies->rr_loss = ntohl(get_uint32(data + 2)); + ies->rr_loss = ntohl(get_unaligned_uint32(data + 2)); } break; case IAX_IE_RR_PKTS: @@ -813,7 +798,7 @@ snprintf(tmp, (int)sizeof(tmp), "Expected packets rr to be %d bytes long but was %d\n", (int)sizeof(unsigned int), len); errorf(tmp); } else { - ies->rr_pkts = ntohl(get_uint32(data + 2)); + ies->rr_pkts = ntohl(get_unaligned_uint32(data + 2)); } break; case IAX_IE_RR_DELAY: @@ -821,7 +806,7 @@ snprintf(tmp, (int)sizeof(tmp), "Expected loss rr to be %d bytes long but was %d\n", (int)sizeof(unsigned short), len); errorf(tmp); } else { - ies->rr_delay = ntohs(get_uint16(data + 2)); + ies->rr_delay = ntohs(get_unaligned_uint16(data + 2)); } break; case IAX_IE_RR_DROPPED: @@ -829,7 +814,7 @@ snprintf(tmp, (int)sizeof(tmp), "Expected packets rr to be %d bytes long but was %d\n", (int)sizeof(unsigned int), len); errorf(tmp); } else { - ies->rr_dropped = ntohl(get_uint32(data + 2)); + ies->rr_dropped = ntohl(get_unaligned_uint32(data + 2)); } break; case IAX_IE_RR_OOO: @@ -837,7 +822,7 @@ snprintf(tmp, (int)sizeof(tmp), "Expected packets rr to be %d bytes long but was %d\n", (int)sizeof(unsigned int), len); errorf(tmp); } else { - ies->rr_ooo = ntohl(get_uint32(data + 2)); + ies->rr_ooo = ntohl(get_unaligned_uint32(data + 2)); } break; default: diff -urN asterisk/dns.c new_asterisk/dns.c --- asterisk/dns.c 2005-03-01 21:17:13.000000000 -0800 +++ new_asterisk/dns.c 2005-03-27 18:00:27.441007680 -0800 @@ -19,12 +19,13 @@ #include #include #include +#include #define MAX_SIZE 4096 typedef struct { unsigned id :16; /* query identification number */ -#if BYTE_ORDER == BIG_ENDIAN +#if __BYTE_ORDER == __BIG_ENDIAN /* fields in third byte */ unsigned qr: 1; /* response flag */ unsigned opcode: 4; /* purpose of message */ @@ -38,7 +39,7 @@ unsigned cd: 1; /* checking disabled by resolver */ unsigned rcode :4; /* response code */ #endif -#if BYTE_ORDER == LITTLE_ENDIAN || BYTE_ORDER == PDP_ENDIAN +#if __BYTE_ORDER == __LITTLE_ENDIAN || __BYTE_ORDER == __PDP_ENDIAN /* fields in third byte */ unsigned rd :1; /* recursion desired */ unsigned tc :1; /* truncated message */ diff -urN asterisk/formats/format_g726.c new_asterisk/formats/format_g726.c --- asterisk/formats/format_g726.c 2005-01-20 23:06:25.000000000 -0800 +++ new_asterisk/formats/format_g726.c 2005-03-27 17:16:35.145177472 -0800 @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -24,15 +25,6 @@ #include #include #include -#ifdef __linux__ -#include -#else -#ifdef SOLARIS -#include "solaris-compat/compat.h" -#else -#include -#endif -#endif #define RATE_40 0 #define RATE_32 1 diff -urN asterisk/formats/format_g729.c new_asterisk/formats/format_g729.c --- asterisk/formats/format_g729.c 2005-02-04 07:46:01.000000000 -0800 +++ new_asterisk/formats/format_g729.c 2005-03-27 17:16:52.628519600 -0800 @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -25,15 +26,6 @@ #include #include #include -#ifdef __linux__ -#include -#else -#ifdef SOLARIS -#include "solaris-compat/compat.h" -#else -#include -#endif -#endif /* Some Ideas for this code came from makeg729e.c by Jeffrey Chilton */ diff -urN asterisk/formats/format_gsm.c new_asterisk/formats/format_gsm.c --- asterisk/formats/format_gsm.c 2005-01-20 23:06:25.000000000 -0800 +++ new_asterisk/formats/format_gsm.c 2005-03-27 17:17:08.168157216 -0800 @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -25,15 +26,6 @@ #include #include #include -#ifdef __linux__ -#include -#else -#ifdef SOLARIS -#include "solaris-compat/compat.h" -#else -#include -#endif -#endif #include "msgsm.h" /* Some Ideas for this code came from makegsme.c by Jeffrey Chilton */ diff -urN asterisk/formats/format_h263.c new_asterisk/formats/format_h263.c --- asterisk/formats/format_h263.c 2004-12-14 15:36:30.000000000 -0800 +++ new_asterisk/formats/format_h263.c 2005-03-27 17:17:24.135729776 -0800 @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -25,15 +26,6 @@ #include #include #include -#ifdef __linux__ -#include -#else -#ifdef SOLARIS -#include "solaris-compat/compat.h" -#else -#include -#endif -#endif /* Some Ideas for this code came from makeh263e.c by Jeffrey Chilton */ diff -urN asterisk/formats/format_ilbc.c new_asterisk/formats/format_ilbc.c --- asterisk/formats/format_ilbc.c 2005-01-20 23:06:25.000000000 -0800 +++ new_asterisk/formats/format_ilbc.c 2005-03-27 17:17:37.555689632 -0800 @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -27,15 +28,6 @@ #include #include #include -#ifdef __linux__ -#include -#else -#ifdef SOLARIS -#include "solaris-compat/compat.h" -#else -#include -#endif -#endif /* Some Ideas for this code came from makeg729e.c by Jeffrey Chilton */ diff -urN asterisk/formats/format_jpeg.c new_asterisk/formats/format_jpeg.c --- asterisk/formats/format_jpeg.c 2004-12-14 15:36:30.000000000 -0800 +++ new_asterisk/formats/format_jpeg.c 2005-03-27 17:17:51.251607536 -0800 @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -27,15 +28,6 @@ #include #include #include -#ifdef __linux__ -#include -#else -#ifdef SOLARIS -#include "solaris-compat/compat.h" -#else -#include -#endif -#endif static char *desc = "JPEG (Joint Picture Experts Group) Image Format"; diff -urN asterisk/formats/format_pcm_alaw.c new_asterisk/formats/format_pcm_alaw.c --- asterisk/formats/format_pcm_alaw.c 2004-12-18 14:04:06.000000000 -0800 +++ new_asterisk/formats/format_pcm_alaw.c 2005-03-27 17:18:07.033208368 -0800 @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -27,15 +28,6 @@ #include #include #include -#ifdef __linux__ -#include -#else -#ifdef SOLARIS -#include "solaris-compat/compat.h" -#else -#include -#endif -#endif #define BUF_SIZE 160 /* 160 samples */ diff -urN asterisk/formats/format_pcm.c new_asterisk/formats/format_pcm.c --- asterisk/formats/format_pcm.c 2004-12-18 14:04:06.000000000 -0800 +++ new_asterisk/formats/format_pcm.c 2005-03-27 17:18:18.422476936 -0800 @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -25,15 +26,6 @@ #include #include #include -#ifdef __linux__ -#include -#else -#ifdef SOLARIS -#include "solaris-compat/compat.h" -#else -#include -#endif -#endif #define BUF_SIZE 160 /* 160 samples */ diff -urN asterisk/formats/format_sln.c new_asterisk/formats/format_sln.c --- asterisk/formats/format_sln.c 2004-12-19 13:13:41.000000000 -0800 +++ new_asterisk/formats/format_sln.c 2005-03-27 17:18:41.152021520 -0800 @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include @@ -23,15 +24,6 @@ #include #include #include -#ifdef __linux__ -#include -#else -#ifdef SOLARIS -#include "solaris-compat/compat.h" -#else -#include -#endif -#endif #define BUF_SIZE 320 /* 320 samples */ diff -urN asterisk/formats/format_vox.c new_asterisk/formats/format_vox.c --- asterisk/formats/format_vox.c 2004-12-14 15:36:30.000000000 -0800 +++ new_asterisk/formats/format_vox.c 2005-03-27 17:18:52.472300576 -0800 @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -25,15 +26,6 @@ #include #include #include -#ifdef __linux__ -#include -#else -#ifdef SOLARIS -#include "solaris-compat/compat.h" -#else -#include -#endif -#endif #define BUF_SIZE 80 /* 160 samples */ diff -urN asterisk/formats/format_wav.c new_asterisk/formats/format_wav.c --- asterisk/formats/format_wav.c 2004-12-18 14:04:06.000000000 -0800 +++ new_asterisk/formats/format_wav.c 2005-03-27 17:19:03.333649400 -0800 @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -25,15 +26,6 @@ #include #include #include -#ifdef __linux__ -#include -#else -#ifdef SOLARIS -#include "solaris-compat/compat.h" -#else -#include -#endif -#endif /* Some Ideas for this code came from makewave.c by Jeffrey Chilton */ diff -urN asterisk/formats/format_wav_gsm.c new_asterisk/formats/format_wav_gsm.c --- asterisk/formats/format_wav_gsm.c 2005-03-22 20:30:31.000000000 -0800 +++ new_asterisk/formats/format_wav_gsm.c 2005-03-27 17:19:16.626628560 -0800 @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -25,15 +26,6 @@ #include #include #include -#ifdef __linux__ -#include -#else -#ifdef SOLARIS -#include "solaris-compat/compat.h" -#else -#include -#endif -#endif #include "msgsm.h" /* Some Ideas for this code came from makewave.c by Jeffrey Chilton */ diff -urN asterisk/include/asterisk/endian.h new_asterisk/include/asterisk/endian.h --- asterisk/include/asterisk/endian.h 1969-12-31 16:00:00.000000000 -0800 +++ new_asterisk/include/asterisk/endian.h 2005-03-27 17:54:47.636665792 -0800 @@ -0,0 +1,50 @@ +/* + * Asterisk -- A telephony toolkit for Linux. + * + * Asterisk internal frame definitions. + * + * Copyright (C) 1999 - 2005, Digium, Inc. + * + * Mark Spencer + * + * This program is free software, distributed under the terms of + * the GNU Lesser General Public License. Other components of + * Asterisk are distributed under The GNU General Public License + * only. + */ + +#ifndef _ASTERISK_ENDIAN_H +#define _ASTERISK_ENDIAN_H + +/* + * Autodetect system endianess + */ + +#if defined( __OpenBSD__ ) +# include +# include +#elif defined( __FreeBSD__ ) || defined( __NetBSD__ ) +# include +# include +#elif defined( BSD ) && ( BSD >= 199103 ) || defined(__APPLE__) +# include +#elif defined ( SOLARIS ) +# include +#elif defined( __GNUC__ ) || defined( __GNU_LIBRARY__ ) +# include +#if !defined(__APPLE__) +# include +#endif +#elif defined( linux ) +# include +#endif + +#ifndef BYTE_ORDER +#define BYTE_ORDER __BYTE_ORDER +#endif + +#ifndef __BYTE_ORDER +#error Endianess needs to be defined +#endif +#endif /* _ASTERISK_ENDIAN_H */ + diff -urN asterisk/include/asterisk/frame.h new_asterisk/include/asterisk/frame.h --- asterisk/include/asterisk/frame.h 2005-03-20 20:30:57.000000000 -0800 +++ new_asterisk/include/asterisk/frame.h 2005-03-27 17:19:55.795673960 -0800 @@ -22,45 +22,7 @@ #include #include - -#ifdef SOLARIS -#include "solaris-compat/compat.h" -#endif - -/* - * Autodetect system endianess - */ -#ifndef __BYTE_ORDER -#ifdef __linux__ -#include -#elif defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__APPLE__) -#if defined(__OpenBSD__) -#include -#endif /* __OpenBSD__ */ -#include -#define __BYTE_ORDER BYTE_ORDER -#define __LITTLE_ENDIAN LITTLE_ENDIAN -#define __BIG_ENDIAN BIG_ENDIAN -#else -#ifdef __LITTLE_ENDIAN__ -#define __BYTE_ORDER __LITTLE_ENDIAN -#endif /* __LITTLE_ENDIAN */ - -#if defined(i386) || defined(__i386__) -#define __BYTE_ORDER __LITTLE_ENDIAN -#endif /* defined i386 */ - -#if defined(sun) && defined(unix) && defined(sparc) -#define __BYTE_ORDER __BIG_ENDIAN -#endif /* sun unix sparc */ - -#endif /* linux */ - -#endif /* __BYTE_ORDER */ - -#ifndef __BYTE_ORDER -#error Need to know endianess -#endif /* __BYTE_ORDER */ +#include struct ast_codec_pref { char order[32]; diff -urN asterisk/include/asterisk/unaligned.h new_asterisk/include/asterisk/unaligned.h --- asterisk/include/asterisk/unaligned.h 1969-12-31 16:00:00.000000000 -0800 +++ new_asterisk/include/asterisk/unaligned.h 2005-03-27 17:43:39.038308192 -0800 @@ -0,0 +1,95 @@ +/* + * Asterisk -- A telephony toolkit for Linux. + * + * Asterisk internal frame definitions. + * + * Copyright (C) 1999 - 2005, Digium, Inc. + * + * Mark Spencer + * + * This program is free software, distributed under the terms of + * the GNU Lesser General Public License. Other components of + * Asterisk are distributed under The GNU General Public License + * only. + */ + +#ifndef _ASTERISK_UNALIGNED_H +#define _ASTERISK_UNALIGNED_H + +#if defined(__cplusplus) || defined(c_plusplus) +extern "C" { +#endif + +#ifdef __GNUC__ +/* If we just tell GCC what's going on, we can trust it to behave optimally */ +static inline unsigned int get_unaligned_uint32(void *p) +{ + struct { unsigned int d; } __attribute__((packed)) *pp = (void *)p; + + return pp->d; +} +static inline unsigned short get_unaligned_uint16(void *p) +{ + struct { unsigned short d; } __attribute__((packed)) *pp = (void *)p; + + return pp->d; +} + +static inline void put_unaligned_uint32(void *p, unsigned int datum) +{ + struct { unsigned int d; } __attribute__((packed)) *pp = (void *)p; + + pp->d = datum; +} + +static inline void put_unaligned_uint16(void *p, unsigned short datum) +{ + struct { unsigned short d; } __attribute__((packed)) *pp = (void *)p; + + pp->d = datum; +} +#elif defined(SOLARIS) && defined(__sparc__) +static inline unsigned int get_unaligned_uint32(void *p) +{ + unsigned char *cp = p; + + return (cp[0] << 24) | (cp[1] << 16) | (cp[2] << 8) | cp[3]; +} + +static inline unsigned short get_unaligned_uint16(void *p) +{ + unsigned char *cp = p; + + return (cp[0] << 8) | cp[1] ; +} + +static inline void put_unaligned_uint32(void *p, unsigned int datum) +{ + unsigned char *cp = p; + + cp[0] = datum >> 24; + cp[1] = datum >> 16; + cp[2] = datum >> 8; + cp[3] = datum; +} + +static inline void put_unaligned_uint16(void *p, unsigned int datum) +{ + unsigned char *cp = p; + + cp[0] = datum >> 8; + cp[1] = datum; +} +#else /* Not GCC, not Solaris/SPARC. Assume we can handle direct load/store. */ +#define get_unaligned_uint32(p) (*((unsigned int *)(p))) +#define get_unaligned_uint16(p) (*((unsigned short *)(p))) +#define put_unaligned_uint32(p,d) do { unsigned int *__P = (p); *__P = d; } while(0) +#define put_unaligned_uint16(p,d) do { unsigned short *__P = (p); *__P = d; } while(0) +#endif + +#if defined(__cplusplus) || defined(c_plusplus) +} +#endif + + +#endif /* _ASTERISK_UNALIGNED_H */ diff -urN asterisk/md5.c new_asterisk/md5.c --- asterisk/md5.c 2004-12-14 15:36:29.000000000 -0800 +++ new_asterisk/md5.c 2005-03-27 18:05:50.944827624 -0800 @@ -1,22 +1,5 @@ /* MD5 checksum routines used for authentication. Not covered by GPL, but in the public domain as per the copyright below */ -#if defined( __OpenBSD__ ) -# include -# include -#elif defined( __FreeBSD__ ) || defined( __NetBSD__ ) -# include -# include -#elif defined( BSD ) && ( BSD >= 199103 ) || defined(__APPLE__) -# include -#elif defined( __sparc__ ) && defined( SOLARIS ) -# define BIG_ENDIAN 4321 -# define BYTE_ORDER BIG_ENDIAN -#else -# include -#endif -# if __BYTE_ORDER == __BIG_ENDIAN || BYTE_ORDER == BIG_ENDIAN -# define HIGHFIRST 1 -# endif /* * This code implements the MD5 message-digest algorithm. @@ -35,8 +18,12 @@ * will fill a supplied 16-byte array with the digest. */ #include /* for memcpy() */ +#include #include +# if __BYTE_ORDER == __BIG_ENDIAN +# define HIGHFIRST 1 +# endif #ifndef HIGHFIRST #define byteReverse(buf, len) /* Nothing */ #else diff -urN asterisk/rtp.c new_asterisk/rtp.c --- asterisk/rtp.c 2005-03-25 13:01:11.000000000 -0800 +++ new_asterisk/rtp.c 2005-03-27 17:34:38.241521800 -0800 @@ -37,6 +37,7 @@ #include #include #include +#include #define MAX_TIMESTAMP_SKEW 640 @@ -1173,18 +1174,6 @@ return 0; } -#if defined(SOLARIS) && defined(__sparc__) -static void put_uint32(unsigned char *buf, int i) -{ - buf[0] = (i>>24) & 0xff; - buf[1] = (i>>16) & 0xff; - buf[2] = (i>>8) & 0xff; - buf[3] = i & 0xff; -} -#else -#define put_uint32(p,v) ((*((unsigned int *)(p))) = (v)) -#endif - static int ast_rtp_raw_write(struct ast_rtp *rtp, struct ast_frame *f, int codec) { unsigned char *rtpheader; @@ -1270,9 +1259,9 @@ /* Get a pointer to the header */ rtpheader = (unsigned char *)(f->data - hdrlen); - put_uint32(rtpheader, htonl((2 << 30) | (codec << 16) | (rtp->seqno) | (mark << 23))); - put_uint32(rtpheader + 4, htonl(rtp->lastts)); - put_uint32(rtpheader + 8, htonl(rtp->ssrc)); + put_unaligned_uint32(rtpheader, htonl((2 << 30) | (codec << 16) | (rtp->seqno) | (mark << 23))); + put_unaligned_uint32(rtpheader + 4, htonl(rtp->lastts)); + put_unaligned_uint32(rtpheader + 8, htonl(rtp->ssrc)); if (rtp->them.sin_port && rtp->them.sin_addr.s_addr) { res = sendto(rtp->s, (void *)rtpheader, f->datalen + hdrlen, 0, (struct sockaddr *)&rtp->them, sizeof(rtp->them));