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
