[ovs-dev] [PATCH branch-2.5 1/2] datapath: backport: Set mark and labels before confirming.

Jarno Rajahalme jarno at ovn.org
Wed Jul 6 07:35:24 UTC 2016


Acked-by: Jarno Rajahalme <jarno at ovn.org>

> On Jul 1, 2016, at 11:37 AM, Pravin B Shelar <pshelar at ovn.org> wrote:
> 
> Upstream commit:
>    commit 1c1779fa54b2a9d4e1de990095d790d64b9e00a1
>    Author: Jarno Rajahalme <jarno at 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 <jarno at ovn.org>
>    Acked-by: Joe Stringer <joe at ovn.org>
>    Signed-off-by: David S. Miller <davem at davemloft.net>
> 
> Signed-off-by: Pravin B Shelar <pshelar at 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 at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev




More information about the dev mailing list