On Fri, Dec 19, 2014 at 12:15 PM, Andy Zhou <az...@nicira.com> wrote:
> It may be nice to check for inner protocol being set when executing
> the set tunnel action.
>
> On Fri, Dec 19, 2014 at 11:10 AM, Jarno Rajahalme <jrajaha...@nicira.com> 
> wrote:
>> LGTM,
>>
>> Acked-by: Jarno Rajahalme <jrajaha...@nicira.com>
>>
>>   Jarno
>>

Thanks for both reviews, I added a check on tunnel xmit to detect this
case and pushed patch to master.


>>> On Dec 19, 2014, at 10:50 AM, Pravin B Shelar <pshe...@nicira.com> wrote:
>>>
>>> Linux stack do not allow GSO for packet with multiple
>>> encapsulations.  Therefore there was check in MPLS action
>>> validation to detect such case, But is it not really required
>>> since we already have check in action execution.
>>> Removing this check also fixes bug in action copy to no skip
>>> multiple set actions.
>>>
>>> Signed-off-by: Pravin B Shelar <pshe...@nicira.com>
>>> Reported-by: Srinivas Neginhal <snegi...@vmware.com>
>>> Bug #1367702
>>> ---
>>> datapath/flow_netlink.c |   13 ++-----------
>>> 1 files changed, 2 insertions(+), 11 deletions(-)
>>>
>>> diff --git a/datapath/flow_netlink.c b/datapath/flow_netlink.c
>>> index 4aae305..c611e71 100644
>>> --- a/datapath/flow_netlink.c
>>> +++ b/datapath/flow_netlink.c
>>> @@ -1764,7 +1764,6 @@ static int __ovs_nla_copy_actions(const struct nlattr 
>>> *attr,
>>>                  __be16 eth_type, __be16 vlan_tci, bool log)
>>> {
>>>    const struct nlattr *a;
>>> -    bool out_tnl_port = false;
>>>    int rem, err;
>>>
>>>    if (depth >= SAMPLE_ACTION_DEPTH)
>>> @@ -1807,7 +1806,6 @@ static int __ovs_nla_copy_actions(const struct nlattr 
>>> *attr,
>>>        case OVS_ACTION_ATTR_OUTPUT:
>>>            if (nla_get_u32(a) >= DP_MAX_PORTS)
>>>                return -EINVAL;
>>> -            out_tnl_port = false;
>>>
>>>            break;
>>>
>>> @@ -1843,14 +1841,9 @@ static int __ovs_nla_copy_actions(const struct 
>>> nlattr *attr,
>>>        case OVS_ACTION_ATTR_PUSH_MPLS: {
>>>            const struct ovs_action_push_mpls *mpls = nla_data(a);
>>>
>>> -            /* Networking stack do not allow simultaneous Tunnel
>>> -             * and MPLS GSO.
>>> -             */
>>> -            if (out_tnl_port)
>>> -                return -EINVAL;
>>> -
>>>            if (!eth_p_mpls(mpls->mpls_ethertype))
>>>                return -EINVAL;
>>> +
>>>            /* Prohibit push MPLS other than to a white list
>>>             * for packets that have a known tag order.
>>>             */
>>> @@ -1884,11 +1877,9 @@ static int __ovs_nla_copy_actions(const struct 
>>> nlattr *attr,
>>>
>>>        case OVS_ACTION_ATTR_SET:
>>>            err = validate_set(a, key, sfa,
>>> -                       &out_tnl_port, eth_type, log);
>>> +                       &skip_copy, eth_type, log);
>>>            if (err)
>>>                return err;
>>> -
>>> -            skip_copy = out_tnl_port;
>>>            break;
>>>
>>>        case OVS_ACTION_ATTR_SAMPLE:
>>> --
>>> 1.7.1
>>>
>>> _______________________________________________
>>> dev mailing list
>>> dev@openvswitch.org
>>> http://openvswitch.org/mailman/listinfo/dev
>> _______________________________________________
>> dev mailing list
>> dev@openvswitch.org
>> http://openvswitch.org/mailman/listinfo/dev
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to