git://git.onelab.eu
/
sliver-openvswitch.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
odp-util: Always generate key/mask pair in netlink for recirc_id
[sliver-openvswitch.git]
/
lib
/
dpif-netdev.c
diff --git
a/lib/dpif-netdev.c
b/lib/dpif-netdev.c
index
790fe23
..
15aa42a
100644
(file)
--- a/
lib/dpif-netdev.c
+++ b/
lib/dpif-netdev.c
@@
-1447,6
+1447,7
@@
dpif_netdev_flow_dump_next(const struct dpif *dpif, void *iter_, void *state_,
struct dp_netdev_flow_state *state = state_;
struct dp_netdev *dp = get_dp_netdev(dpif);
struct dp_netdev_flow *netdev_flow;
struct dp_netdev_flow_state *state = state_;
struct dp_netdev *dp = get_dp_netdev(dpif);
struct dp_netdev_flow *netdev_flow;
+ struct flow_wildcards wc;
int error;
ovs_mutex_lock(&iter->mutex);
int error;
ovs_mutex_lock(&iter->mutex);
@@
-1469,11
+1470,13
@@
dpif_netdev_flow_dump_next(const struct dpif *dpif, void *iter_, void *state_,
return error;
}
return error;
}
+ minimask_expand(&netdev_flow->cr.match.mask, &wc);
+
if (key) {
struct ofpbuf buf;
ofpbuf_use_stack(&buf, &state->keybuf, sizeof state->keybuf);
if (key) {
struct ofpbuf buf;
ofpbuf_use_stack(&buf, &state->keybuf, sizeof state->keybuf);
- odp_flow_key_from_flow(&buf, &netdev_flow->flow,
+ odp_flow_key_from_flow(&buf, &netdev_flow->flow,
&wc.masks,
netdev_flow->flow.in_port.odp_port);
*key = ofpbuf_data(&buf);
netdev_flow->flow.in_port.odp_port);
*key = ofpbuf_data(&buf);
@@
-1482,10
+1485,8
@@
dpif_netdev_flow_dump_next(const struct dpif *dpif, void *iter_, void *state_,
if (key && mask) {
struct ofpbuf buf;
if (key && mask) {
struct ofpbuf buf;
- struct flow_wildcards wc;
ofpbuf_use_stack(&buf, &state->maskbuf, sizeof state->maskbuf);
ofpbuf_use_stack(&buf, &state->maskbuf, sizeof state->maskbuf);
- minimask_expand(&netdev_flow->cr.match.mask, &wc);
odp_flow_key_from_mask(&buf, &wc.masks, &netdev_flow->flow,
odp_to_u32(wc.masks.in_port.odp_port),
SIZE_MAX);
odp_flow_key_from_mask(&buf, &wc.masks, &netdev_flow->flow,
odp_to_u32(wc.masks.in_port.odp_port),
SIZE_MAX);
@@
-2083,7
+2084,7
@@
dp_netdev_output_userspace(struct dp_netdev *dp, struct ofpbuf *packet,
/* Put ODP flow. */
miniflow_expand(key, &flow);
/* Put ODP flow. */
miniflow_expand(key, &flow);
- odp_flow_key_from_flow(buf, &flow, flow.in_port.odp_port);
+ odp_flow_key_from_flow(buf, &flow,
NULL,
flow.in_port.odp_port);
upcall->key = ofpbuf_data(buf);
upcall->key_len = ofpbuf_size(buf);
upcall->key = ofpbuf_data(buf);
upcall->key_len = ofpbuf_size(buf);