1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/media/mtransport/third_party/nrappkit/src/util/byteorder.c Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,76 @@ 1.4 +/** 1.5 + byteorder.c 1.6 + 1.7 + 1.8 + Copyright (C) 2007, Network Resonance, Inc. 1.9 + All Rights Reserved 1.10 + 1.11 + Redistribution and use in source and binary forms, with or without 1.12 + modification, are permitted provided that the following conditions 1.13 + are met: 1.14 + 1.15 + 1. Redistributions of source code must retain the above copyright 1.16 + notice, this list of conditions and the following disclaimer. 1.17 + 2. Redistributions in binary form must reproduce the above copyright 1.18 + notice, this list of conditions and the following disclaimer in the 1.19 + documentation and/or other materials provided with the distribution. 1.20 + 3. Neither the name of Network Resonance, Inc. nor the name of any 1.21 + contributors to this software may be used to endorse or promote 1.22 + products derived from this software without specific prior written 1.23 + permission. 1.24 + 1.25 + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 1.26 + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1.27 + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1.28 + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 1.29 + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 1.30 + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 1.31 + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 1.32 + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 1.33 + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 1.34 + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 1.35 + POSSIBILITY OF SUCH DAMAGE. 1.36 + 1.37 + 1.38 + briank@networkresonance.com Wed May 16 16:46:00 PDT 2007 1.39 + */ 1.40 + 1.41 + 1.42 +static char *RCSSTRING __UNUSED__ ="$Id: byteorder.c,v 1.2 2007/06/26 22:37:55 adamcain Exp $"; 1.43 + 1.44 +#include "nr_common.h" 1.45 +#ifndef WIN32 1.46 +#include <arpa/inet.h> 1.47 +#endif 1.48 +#include "r_types.h" 1.49 +#include "byteorder.h" 1.50 + 1.51 +#define IS_BIG_ENDIAN (htonl(0x1) == 0x1) 1.52 + 1.53 +#define BYTE(n,i) (((UCHAR*)&(n))[(i)]) 1.54 +#define SWAP(n,x,y) tmp=BYTE((n),(x)), \ 1.55 + BYTE((n),(x))=BYTE((n),(y)), \ 1.56 + BYTE((n),(y))=tmp 1.57 + 1.58 +UINT8 1.59 +nr_htonll(UINT8 hostlonglong) 1.60 +{ 1.61 + UINT8 netlonglong = hostlonglong; 1.62 + UCHAR tmp; 1.63 + 1.64 + if (!IS_BIG_ENDIAN) { 1.65 + SWAP(netlonglong, 0, 7); 1.66 + SWAP(netlonglong, 1, 6); 1.67 + SWAP(netlonglong, 2, 5); 1.68 + SWAP(netlonglong, 3, 4); 1.69 + } 1.70 + 1.71 + return netlonglong; 1.72 +} 1.73 + 1.74 +UINT8 1.75 +nr_ntohll(UINT8 netlonglong) 1.76 +{ 1.77 + return nr_htonll(netlonglong); 1.78 +} 1.79 +