From: Ben Pfaff Date: Mon, 2 Dec 2013 22:53:27 +0000 (-0800) Subject: byte-order: Make uint32_byteswap() available regardless of endianness. X-Git-Tag: sliver-openvswitch-2.0.90-1~1^2~35 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=4cf5406ba2e8bb8271940b2f54967c9fd1270212;hp=f9c372331477c9b5c419c91687d5490570d4ac89;p=sliver-openvswitch.git byte-order: Make uint32_byteswap() available regardless of endianness. pcap_read() can use it whether we're big-endian or not. Signed-off-by: Ben Pfaff Acked-by: Jarno Rajahalme --- diff --git a/lib/byte-order.h b/lib/byte-order.h index f9be78be1..352f91ee6 100644 --- a/lib/byte-order.h +++ b/lib/byte-order.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2010, 2011 Nicira, Inc. + * Copyright (c) 2008, 2010, 2011, 2013 Nicira, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -40,7 +40,6 @@ ovs_be64 htonll(uint64_t); uint64_t ntohll(ovs_be64); #endif -#if defined(WORDS_BIGENDIAN) static inline uint32_t uint32_byteswap(uint32_t crc) { return (((crc & 0x000000ff) << 24) | @@ -48,7 +47,6 @@ uint32_byteswap(uint32_t crc) { ((crc & 0x00ff0000) >> 8) | ((crc & 0xff000000) >> 24)); } -#endif /* These macros may substitute for htons(), htonl(), and htonll() in contexts * where function calls are not allowed, such as case labels. They should not diff --git a/lib/pcap-file.c b/lib/pcap-file.c index 9091a7261..ac6871642 100644 --- a/lib/pcap-file.c +++ b/lib/pcap-file.c @@ -21,6 +21,7 @@ #include #include #include +#include "byte-order.h" #include "compiler.h" #include "ofpbuf.h" #include "vlog.h" @@ -151,10 +152,7 @@ pcap_read(FILE *file, struct ofpbuf **bufp) /* Calculate length. */ len = prh.incl_len; if (len > 0xffff) { - uint32_t swapped_len = (((len & 0xff000000) >> 24) | - ((len & 0x00ff0000) >> 8) | - ((len & 0x0000ff00) << 8) | - ((len & 0x000000ff) << 24)); + uint32_t swapped_len = uint32_byteswap(len); if (swapped_len > 0xffff) { VLOG_WARN("bad packet length %"PRIuSIZE" or %"PRIu32" " "reading pcap file",