source: lib/byteswap.c @ 29ba7c2

4.0.1-hotfixescachetimestampsdevelopdpdk-ndagetsilivegetfragoffhelplibtrace4ndag_formatpfringrc-4.0.1rc-4.0.2rc-4.0.3rc-4.0.4ringdecrementfixringperformanceringtimestampfixes
Last change on this file since 29ba7c2 was 8b49230, checked in by Shane Alcock <salcock@…>, 8 years ago

Fixed problems with decoding RadioTap? headers with libpacketdump on big endian
hosts

  • Moved byteswapX functions to a separate source file so that libpacketdump can also link against them.
  • bswap_* macros have been moved into lt_bswap.h so they can be used without having to include the entire libtrace_int.h header
  • Fixed endianness issues with the "fields" inside the RadioTap? header.
  • Property mode set to 100644
File size: 1.6 KB
Line 
1/*
2 * This file is part of libtrace
3 *
4 * Copyright (c) 2007,2008,2009,2010 The University of Waikato, Hamilton,
5 * New Zealand.
6 *
7 * Authors: Daniel Lawson
8 *          Perry Lorier
9 *          Shane Alcock
10 *         
11 * All rights reserved.
12 *
13 * This code has been developed by the University of Waikato WAND
14 * research group. For further information please see http://www.wand.net.nz/
15 *
16 * libtrace is free software; you can redistribute it and/or modify
17 * it under the terms of the GNU General Public License as published by
18 * the Free Software Foundation; either version 2 of the License, or
19 * (at your option) any later version.
20 *
21 * libtrace is distributed in the hope that it will be useful,
22 * but WITHOUT ANY WARRANTY; without even the implied warranty of
23 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
24 * GNU General Public License for more details.
25 *
26 * You should have received a copy of the GNU General Public License
27 * along with libtrace; if not, write to the Free Software
28 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
29 *
30 * $Id: format_helper.c 1830 2013-05-14 05:17:57Z salcock $
31 *
32 */
33
34#include "lt_bswap.h"
35
36/* Byte swapping functions for various inttypes */
37uint64_t byteswap64(uint64_t num)
38{
39        return (byteswap32((num&0xFFFFFFFF00000000ULL)>>32))
40              |((uint64_t)byteswap32(num&0x00000000FFFFFFFFULL)<<32);
41}
42
43uint32_t byteswap32(uint32_t num)
44{
45        return ((num&0x000000FFU)<<24)
46                | ((num&0x0000FF00U)<<8)
47                | ((num&0x00FF0000U)>>8)
48                | ((num&0xFF000000U)>>24);
49}
50
51uint16_t byteswap16(uint16_t num)
52{
53        return ((num<<8)&0xFF00)|((num>>8)&0x00FF);
54}
55
Note: See TracBrowser for help on using the repository browser.