pcap_read() can use it whether we're big-endian or not.
Signed-off-by: Ben Pfaff <[email protected]>
---
lib/byte-order.h | 4 +---
lib/pcap-file.c | 6 ++----
2 files changed, 3 insertions(+), 7 deletions(-)
diff --git a/lib/byte-order.h b/lib/byte-order.h
index f9be78b..352f91e 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 700cdea..fbb0751 100644
--- a/lib/pcap-file.c
+++ b/lib/pcap-file.c
@@ -21,6 +21,7 @@
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
+#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 %zu or %"PRIu32" "
"reading pcap file",
--
1.7.10.4
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev