Subject: Re: Sending undersized ARP packets with VXLAN L3 interface

From: Rick Jones <[email-masked]>
Date: Wed, 27 Aug 2014 11:16:02 -0700

On 08/27/2014 10:52 AM, Vlad Yasevich wrote:
> I think vxlan needs something like this:
>
> From: Vladislav Yasevich <[email-masked]>
> Date: Wed, 27 Aug 2014 13:39:32 -0400
> Subject: [PATCH] vxlan: Pad short ethernet frames.
>
> If sending short ethernet frames from the vxlan device, pad
> them to minimum size so they can be forwarded after decapsulation.
>
> Reported-by: Martin Rusko <[email-masked]>
> Signed-off-by: Vladislav Yasevich <[email-masked]>
> ---
>   drivers/net/vxlan.c | 8 ++++++++
>   1 file changed, 8 insertions(+)
>
> diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c
> index 1fb7b37..48267d4 100644
> --- a/drivers/net/vxlan.c
> +++ b/drivers/net/vxlan.c
> @@ -1939,6 +1939,14 @@ static netdev_tx_t vxlan_xmit(struct sk_buff *skb, struct
> net_device *dev)
>   #endif
>   	}
>
> +	/* Pad short frames so they can be forwarded after decapsulation */
> +	if (skb->len < ETH_ZLEN) {
> +		if (skb_pad(skb, ETH_ZLEN - skb->len))
> +			return NETDEV_TX_OK;
> +		skb->len = ETH_ZLEN;
> +		skb_set_tail_pointer(skb, ETH_ZLEN);
> +	}
> +
>   	f = vxlan_find_mac(vxlan, eth->h_dest);
>   	did_rsc = false;
>

It is perhaps putting a stripe on the bikeshed, but should that be an 
"unlikely" on the length check?  There seem to be examples both ways in 
the handful of physical drivers I've checked.

rick jones