[ovs-dev] [patch v3] netdev-native-tnl: Fix alignment for erspan index.

Gregory Rose gvrose8192 at gmail.com
Tue May 22 19:56:51 UTC 2018


On 5/22/2018 10:58 AM, Darrell Ball wrote:
> Flagged by clang.
>
> CC: Greg Rose <gvrose8192 at gmail.com>
> Fixes: 068794b43f0e ("erspan: Add flow-based erspan options")
> Signed-off-by: Darrell Ball <dlu998 at gmail.com>

Adding William...

- Greg

> ---
>   lib/netdev-native-tnl.c | 15 ++++++---------
>   1 file changed, 6 insertions(+), 9 deletions(-)
>
> diff --git a/lib/netdev-native-tnl.c b/lib/netdev-native-tnl.c
> index c97491e..dd36695 100644
> --- a/lib/netdev-native-tnl.c
> +++ b/lib/netdev-native-tnl.c
> @@ -653,24 +653,21 @@ netdev_erspan_build_header(const struct netdev *netdev,
>       }
>   
>       if (erspan_ver == 1) {
> -        ovs_be32 *index;
> -
>           greh->protocol = htons(ETH_TYPE_ERSPAN1);
>           greh->flags = htons(GRE_SEQ);
>           ersh->ver = 1;
>           set_sid(ersh, sid);
>   
> -        put_16aligned_be32(ALIGNED_CAST(ovs_16aligned_be32 *, ersh + 1),
> -                           htonl(tnl_cfg->erspan_idx));
> -
> -        index = (ovs_be32 *)(ersh + 1);
> -
> +        void *erspan_hdr_idx = ersh + 1;
> +        ovs_be32 erspan_idx;
>           if (tnl_cfg->erspan_idx_flow) {
> -            *index = htonl(params->flow->tunnel.erspan_idx);
> +            erspan_idx = htonl(params->flow->tunnel.erspan_idx);
>           } else {
> -            *index = htonl(tnl_cfg->erspan_idx);
> +            erspan_idx = htonl(tnl_cfg->erspan_idx);
>           }
>   
> +        memcpy(erspan_hdr_idx, &erspan_idx, sizeof erspan_idx);
> +
>           hlen = ERSPAN_GREHDR_LEN + sizeof *ersh + ERSPAN_V1_MDSIZE;
>       } else if (erspan_ver == 2) {
>           struct erspan_md2 *md2 = ALIGNED_CAST(struct erspan_md2 *, ersh + 1);



More information about the dev mailing list