From: Paul Blakey <[email protected]>

Search all datapath added netdevs for a given flow
using netdev flow api and parse it back to dpif flow.

Signed-off-by: Paul Blakey <[email protected]>
Reviewed-by: Roi Dayan <[email protected]>
---
 lib/dpif-netlink.c | 11 ++++++++++-
 lib/netdev.c       | 16 ++++++++++++++++
 2 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/lib/dpif-netlink.c b/lib/dpif-netlink.c
index b5f5694..a9eb25f 100644
--- a/lib/dpif-netlink.c
+++ b/lib/dpif-netlink.c
@@ -2097,7 +2097,16 @@ try_send_to_netdev(struct dpif_netlink *dpif, struct 
dpif_op *op)
         return netdev_ports_flow_del(DPIF_HMAP_KEY(&dpif->dpif), del->ufid,
                                      del->stats);
     }
-    case DPIF_OP_FLOW_GET:
+    case DPIF_OP_FLOW_GET: {
+        struct dpif_flow_get *get = &op->u.flow_get;
+
+        if (!op->u.flow_get.ufid) {
+            break;
+        }
+        dbg_print_flow(get->key, get->key_len, NULL, 0, NULL, 0,
+                       get->ufid, "GET");
+        return parse_flow_get(dpif, get);
+    }
     case DPIF_OP_EXECUTE:
     default:
         break;
diff --git a/lib/netdev.c b/lib/netdev.c
index c6a4582..fd77d55 100644
--- a/lib/netdev.c
+++ b/lib/netdev.c
@@ -2284,6 +2284,22 @@ netdev_ports_flow_del(const void *obj, const ovs_u128 
*ufid,
     return ENOENT;
 }
 
+int
+netdev_ports_flow_get(const void *obj, struct match *match,
+                      struct nlattr **actions, struct dpif_flow_stats *stats,
+                      const ovs_u128 *ufid, struct ofpbuf *buf)
+{
+    struct port_to_netdev_data *data;
+
+    HMAP_FOR_EACH(data, node, &port_to_netdev) {
+        if (data->obj == obj && !netdev_flow_get(data->netdev, match, actions,
+                                                 stats, ufid, buf)) {
+            return 0;
+        }
+    }
+    return ENOENT;
+}
+
 bool netdev_flow_api_enabled = false;
 
 void
-- 
2.7.4

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to