Skip to content

Commit

Permalink
Make the ovs_be<N> types generally available.
Browse files Browse the repository at this point in the history
Using these types for data in network byte order makes code clearer, and
allows the "sparse" checker to give warnings for misuse.
  • Loading branch information
blp committed Oct 29, 2010
1 parent d98e600 commit fba4733
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 4 deletions.
3 changes: 3 additions & 0 deletions build-aux/check-structs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ types['uint8_t'] = {"size": 1, "alignment": 1}
types['uint16_t'] = {"size": 2, "alignment": 2}
types['uint32_t'] = {"size": 4, "alignment": 4}
types['uint64_t'] = {"size": 8, "alignment": 8}
types['ovs_be16'] = {"size": 2, "alignment": 2}
types['ovs_be32'] = {"size": 4, "alignment": 4}
types['ovs_be64'] = {"size": 8, "alignment": 8}

token = None
line = ""
Expand Down
5 changes: 1 addition & 4 deletions include/openvswitch/datapath-protocol.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,7 @@
#define ovs_be32 __be32
#define ovs_be64 __be64
#else
#include <stdint.h>
#define ovs_be16 uint16_t
#define ovs_be32 uint32_t
#define ovs_be64 uint64_t
#include "openvswitch/types.h"
#endif

#define ODP_MAX 256 /* Maximum number of datapaths. */
Expand Down
37 changes: 37 additions & 0 deletions include/openvswitch/types.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/*
* Copyright (c) 2010 Nicira Networks.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#ifndef OPENVSWITCH_TYPES_H
#define OPENVSWITCH_TYPES_H 1

#include <stdint.h>

#ifdef __CHECKER__
#define OVS_BITWISE __attribute__((bitwise))
#else
#define OVS_BITWISE
#endif

/* The ovs_be<N> types indicate that an object is in big-endian, not
* native-endian, byte order. They are otherwise equivalent to uint<N>_t.
*
* The OVS_BITWISE annotation allows the sparse checker to issue warnings
* for incorrect use of values in network byte order. */
typedef uint16_t OVS_BITWISE ovs_be16;
typedef uint32_t OVS_BITWISE ovs_be32;
typedef uint64_t OVS_BITWISE ovs_be64;

#endif /* openvswitch/types.h */

0 comments on commit fba4733

Please sign in to comment.