[ovs-dev] [tests+nxm-ofctl 25/42] classifier: New cls_rule functions for setting registers and tun_id.

Ben Pfaff blp at nicira.com
Tue Nov 23 22:43:57 UTC 2010


---
 lib/classifier.c |   22 ++++++++++++++++++++++
 lib/classifier.h |    4 ++++
 2 files changed, 26 insertions(+), 0 deletions(-)

diff --git a/lib/classifier.c b/lib/classifier.c
index 52a77d7..ec94385 100644
--- a/lib/classifier.c
+++ b/lib/classifier.c
@@ -112,6 +112,28 @@ cls_rule_zero_wildcarded_fields(struct cls_rule *rule)
 }
 
 void
+cls_rule_set_reg(struct cls_rule *rule, unsigned int reg_idx, uint32_t value)
+{
+    cls_rule_set_reg_masked(rule, reg_idx, value, UINT32_MAX);
+}
+
+void
+cls_rule_set_reg_masked(struct cls_rule *rule, unsigned int reg_idx,
+                        uint32_t value, uint32_t mask)
+{
+    assert(reg_idx < FLOW_N_REGS);
+    flow_wildcards_set_reg_mask(&rule->wc, reg_idx, mask);
+    rule->flow.regs[reg_idx] = value & mask;
+}
+
+void
+cls_rule_set_tun_id(struct cls_rule *rule, ovs_be32 tun_id)
+{
+    rule->wc.wildcards &= ~FWW_TUN_ID;
+    rule->flow.tun_id = tun_id;
+}
+
+void
 cls_rule_set_in_port(struct cls_rule *rule, uint16_t odp_port)
 {
     rule->wc.wildcards &= ~FWW_IN_PORT;
diff --git a/lib/classifier.h b/lib/classifier.h
index 2dc0bdf..5629fc0 100644
--- a/lib/classifier.h
+++ b/lib/classifier.h
@@ -74,6 +74,10 @@ void cls_rule_init_catchall(struct cls_rule *, unsigned int priority);
 
 void cls_rule_zero_wildcarded_fields(struct cls_rule *);
 
+void cls_rule_set_reg(struct cls_rule *, unsigned int reg_idx, uint32_t value);
+void cls_rule_set_reg_masked(struct cls_rule *, unsigned int reg_idx,
+                             uint32_t value, uint32_t mask);
+void cls_rule_set_tun_id(struct cls_rule *, ovs_be32 tun_id);
 void cls_rule_set_in_port(struct cls_rule *, uint16_t odp_port);
 void cls_rule_set_dl_type(struct cls_rule *, ovs_be16);
 void cls_rule_set_dl_src(struct cls_rule *, const uint8_t[6]);
-- 
1.7.1





More information about the dev mailing list