This is incremental patch to 'Refactor actions' patch posted. Fixed
according to comments from Jesse.

Signed-off-by: Pravin Shelar <[email protected]>
---
 datapath/datapath.c |   12 +++++++-----
 lib/dpif-netdev.c   |    1 +
 lib/odp-util.c      |    2 +-
 3 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/datapath/datapath.c b/datapath/datapath.c
index 35612b0..d901b9b 100644
--- a/datapath/datapath.c
+++ b/datapath/datapath.c
@@ -520,13 +520,15 @@ static int validate_sample(const struct nlattr *attr,
        return validate_actions(a[OVS_SAMPLE_ATTR_ACTIONS], key, (depth + 1));
 }
 
-static int validate_action_key(int act_type, const struct nlattr *ovs_key, int 
act_len,
-               const struct sw_flow_key *flow_key)
+static int validate_action_key(const struct nlattr *a,
+                               const struct sw_flow_key *flow_key)
 {
+       int act_type = nla_type(a);
+       const struct nlattr *ovs_key = nla_data(a);
        int key_type = nla_type(ovs_key);
 
        /* There can be only one key in a action */
-       if (nla_total_size(nla_len(ovs_key)) != act_len)
+       if (nla_total_size(nla_len(ovs_key)) != nla_len(a))
                return -EINVAL;
 
        if (key_type > OVS_KEY_ATTR_MAX ||
@@ -587,6 +589,7 @@ static int validate_action_key(int act_type, const struct 
nlattr *ovs_key, int a
        default:
                return -EINVAL;
        }
+#undef ACTION
        return 0;
 }
 
@@ -666,8 +669,7 @@ static int validate_actions(const struct nlattr *attr,
 
                case OVS_ACTION_ATTR_SET:
                case OVS_ACTION_ATTR_PUSH:
-                       err = validate_action_key(type, nla_data(a),
-                                                nla_len(a), key);
+                       err = validate_action_key(a, key);
                        if (err)
                                return err;
                        break;
diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
index 31c2e27..babbce0 100644
--- a/lib/dpif-netdev.c
+++ b/lib/dpif-netdev.c
@@ -1331,6 +1331,7 @@ dp_netdev_execute_actions(struct dp_netdev *dp,
             break;
 
         case OVS_ACTION_ATTR_POP:
+            assert(nl_attr_get_u16(a) == OVS_KEY_ATTR_8021Q);
             dp_netdev_pop_vlan(packet);
             break;
 
diff --git a/lib/odp-util.c b/lib/odp-util.c
index 9c516bf..db3535d 100644
--- a/lib/odp-util.c
+++ b/lib/odp-util.c
@@ -202,7 +202,7 @@ format_odp_action(struct ds *ds, const struct nlattr *a)
         if (nl_attr_get_u16(a) == OVS_KEY_ATTR_8021Q) {
             ds_put_cstr(ds, "pop(vlan)");
         } else {
-            ds_put_format(ds, "pop(key=%"PRIu16")", nl_attr_get_u16(a));
+            ds_put_format(ds, "pop(key%"PRIu16")", nl_attr_get_u16(a));
         }
         break;
     case OVS_ACTION_ATTR_SET_PRIORITY:
-- 
1.7.1

_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev

Reply via email to