LGTM, and maybe it’s not worth trying to use a GCC builtin for this.

Acked-by: Jarno Rajahalme <jrajaha...@nicira.com>

  Jarno

On Nov 22, 2013, at 1:37 PM, Ben Pfaff <b...@nicira.com> wrote:

> pcap_read() can use it whether we're big-endian or not.
> 
> Signed-off-by: Ben Pfaff <b...@nicira.com>
> ---
> 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
> dev@openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to