/*
- * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Nicira, Inc.
+ * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
static inline size_t
flow_hash(const struct flow *flow, uint32_t basis)
{
- return hash_words64((const uint64_t *)flow,
- sizeof *flow / sizeof(uint64_t), basis);
+ return hash_bytes64((const uint64_t *)flow, sizeof *flow, basis);
}
static inline uint16_t
[FLOW_U64_OFFREM(FIELD) / sizeof(TYPE)] \
: 0)
-/* Get a pointer to the ovs_u128 value of struct flow 'FIELD' from miniflow
- * 'FLOW'. */
-#define MINIFLOW_GET_U128_PTR(FLOW, FIELD) \
- ((MINIFLOW_IN_MAP(FLOW, FLOW_U64_OFFSET(FIELD)) \
- && (MINIFLOW_IN_MAP(FLOW, FLOW_U64_OFFSET(FIELD) + 1))) \
- ? &((OVS_FORCE const ovs_u128 *)miniflow_get__(FLOW, FLOW_U64_OFFSET(FIELD))) \
- [FLOW_U64_OFFREM(FIELD) / sizeof(ovs_u128)] \
- : NULL)
+#define MINIFLOW_GET_U128(FLOW, FIELD) \
+ (ovs_u128) { .u64 = { \
+ (MINIFLOW_IN_MAP(FLOW, FLOW_U64_OFFSET(FIELD)) ? \
+ *miniflow_get__(FLOW, FLOW_U64_OFFSET(FIELD)) : 0), \
+ (MINIFLOW_IN_MAP(FLOW, FLOW_U64_OFFSET(FIELD) + 1) ? \
+ *miniflow_get__(FLOW, FLOW_U64_OFFSET(FIELD) + 1) : 0) } }
#define MINIFLOW_GET_U8(FLOW, FIELD) \
MINIFLOW_GET_TYPE(FLOW, uint8_t, FIELD)