Acked-by: Jarno Rajahalme <ja...@ovn.org>

> On Jul 1, 2016, at 11:37 AM, Pravin B Shelar <pshe...@ovn.org> wrote:
> 
> Upstream commit:
>    commit 1c1779fa54b2a9d4e1de990095d790d64b9e00a1
>    Author: Jarno Rajahalme <ja...@ovn.org>
>    Date:   Tue Jun 21 14:59:37 2016 -0700
> 
>    openvswitch: Set mark and labels before confirming.
> 
>    Set conntrack mark and labels right before committing so that
>    the initial conntrack NEW event has the mark and labels.
> 
>    Signed-off-by: Jarno Rajahalme <ja...@ovn.org>
>    Acked-by: Joe Stringer <j...@ovn.org>
>    Signed-off-by: David S. Miller <da...@davemloft.net>
> 
> Signed-off-by: Pravin B Shelar <pshe...@ovn.org>
> ---
> datapath/conntrack.c | 19 +++++++++++++++----
> 1 file changed, 15 insertions(+), 4 deletions(-)
> 
> diff --git a/datapath/conntrack.c b/datapath/conntrack.c
> index 795ed91..1ef6828 100644
> --- a/datapath/conntrack.c
> +++ b/datapath/conntrack.c
> @@ -484,9 +484,6 @@ static int ovs_ct_commit(struct net *net, struct 
> sw_flow_key *key,
>       err = __ovs_ct_lookup(net, key, info, skb);
>       if (err)
>               return err;
> -     if (nf_conntrack_confirm(skb) != NF_ACCEPT)
> -             return -EINVAL;
> -
>       return 0;
> }
> 
> @@ -528,15 +525,29 @@ int ovs_ct_execute(struct net *net, struct sk_buff *skb,
>       if (err)
>               goto err;
> 
> +     /* Apply changes before confirming the connection so that the initial
> +      * conntrack NEW netlink event carries the values given in the CT
> +      * action.
> +      */
> +
>       if (info->mark.mask) {
>               err = ovs_ct_set_mark(skb, key, info->mark.value,
>                                     info->mark.mask);
>               if (err)
>                       goto err;
>       }
> -     if (labels_nonzero(&info->labels.mask))
> +     if (labels_nonzero(&info->labels.mask)) {
>               err = ovs_ct_set_labels(skb, key, &info->labels.value,
>                                       &info->labels.mask);
> +             if (err)
> +                     goto err;
> +     }
> +     /* This will take care of sending queued events even if the connection
> +      * is already confirmed.
> +      */
> +     if (info->commit && nf_conntrack_confirm(skb) != NF_ACCEPT)
> +             err = -EINVAL;
> +
> err:
>       skb_push(skb, nh_ofs);
>       if (err)
> -- 
> 1.8.3.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

Reply via email to