media/mtransport/third_party/nrappkit/src/util/byteorder.c

changeset 0
6474c204b198
     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 +

mercurial