[ovs-dev] [PATCH v3 06/41] connmgr: Support monitor out_group

Simon Horman horms at verge.net.au
Mon Jun 16 02:29:26 UTC 2014


Filter updates based on the out_group of a flow monitor.
This is analogous to the existing treatment of out_port.

This is in preparation for supporting OpenFlow1.4 flow monitors.

Signed-off-by: Simon Horman <horms at verge.net.au>

---
v3
* Rework for removal of asynchronous operations

v2
* No change
---
 ofproto/connmgr.c          | 5 +++++
 ofproto/ofproto-provider.h | 2 ++
 ofproto/ofproto.c          | 2 +-
 3 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/ofproto/connmgr.c b/ofproto/connmgr.c
index 06f463e..98ffb68 100644
--- a/ofproto/connmgr.c
+++ b/ofproto/connmgr.c
@@ -2121,6 +2121,11 @@ ofmonitor_report(struct connmgr *mgr, struct rule *rule,
                         && ofpacts_output_to_port(old_actions->ofpacts,
                                                   old_actions->ofpacts_len,
                                                   m->out_port)))
+                && (ofproto_rule_has_out_group(rule, m->out_group)
+                    || (old_actions
+                        && ofpacts_output_to_group(old_actions->ofpacts,
+                                                   old_actions->ofpacts_len,
+                                                   m->out_group)))
                 && (ofconn == abbrev_ofconn || !(m->flags & OFPFMF14_ONLY_OWN))
                 && cls_rule_is_loose_match(&rule->cr, &m->match)) {
                 flags |= m->flags;
diff --git a/ofproto/ofproto-provider.h b/ofproto/ofproto-provider.h
index 60cba62..860cace 100644
--- a/ofproto/ofproto-provider.h
+++ b/ofproto/ofproto-provider.h
@@ -423,6 +423,8 @@ const struct rule_actions *rule_actions_create(const struct ofpact *, size_t);
 void rule_actions_destroy(const struct rule_actions *);
 bool ofproto_rule_has_out_port(const struct rule *, ofp_port_t port)
     OVS_REQUIRES(ofproto_mutex);
+bool ofproto_rule_has_out_group(const struct rule *, uint32_t group_id)
+    OVS_REQUIRES(ofproto_mutex);
 
 /* A set of rules to which an OpenFlow operation applies. */
 struct rule_collection {
diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c
index b5abcb8..706784a 100644
--- a/ofproto/ofproto.c
+++ b/ofproto/ofproto.c
@@ -2587,7 +2587,7 @@ ofproto_rule_has_out_port(const struct rule *rule, ofp_port_t port)
 }
 
 /* Returns true if 'rule' has group and equals group_id. */
-static bool
+bool
 ofproto_rule_has_out_group(const struct rule *rule, uint32_t group_id)
     OVS_REQUIRES(ofproto_mutex)
 {
-- 
2.0.0.rc2




More information about the dev mailing list