On Wed, Oct 27, 2021 at 04:05:21PM +0300, Pavel Tikhomirov wrote:
>  
> +#ifdef CONFIG_VE
> +static int vzethdev_filter(struct sk_buff *skb, struct net_device *dev, 
> struct net_device *rcv)
> +{
> +     /* Filtering */
> +     if (ve_is_super(dev_net(dev)->owner_ve) &&
> +         dev->ve_features & NETIF_F_FIXED_ADDR) {
> +             /* from VE0 to VEX */
> +             if (ve_is_super(dev_net(rcv)->owner_ve))
> +                     return 1;
> +             if (is_multicast_ether_addr(
> +                                     ((struct ethhdr *)skb->data)->h_dest))
> +                     return 1;
> +             if (!ether_addr_equal(((struct ethhdr *)skb->data)->h_dest,
> +                                   rcv->dev_addr))
> +                     return 0;
> +     } else if (!ve_is_super(dev_net(dev)->owner_ve) &&
> +                dev->ve_features & NETIF_F_FIXED_ADDR) {
> +             /* from VEX to VE0 */
> +             if (!ether_addr_equal(((struct ethhdr *)skb->data)->h_source,
> +                                   dev->dev_addr))
> +                     return 0;
> +     }
> +
> +     return 1;
> +}
> +#endif

Since we're reworking this function anyway how about make it more readable, say

static int vzethdev_filter(struct sk_buff *skb, struct net_device *dev, struct 
net_device *rcv)
{
        struct ethhdr *e;

        if (!(dev->ve_features & NETIF_F_FIXED_ADDR))
                return 1;

        e = (struct ethhdr *)skb->data;
        if (ve_is_super(dev_net(dev)->owner_ve)) {
                /* from VE0 to VEX */
                if (ve_is_super(dev_net(rcv)->owner_ve))
                        return 1;
                if (is_multicast_ether_addr(e->h_dest))
                        return 1;
                if (!ether_addr_equal(e->h_dest, rcv->dev_addr))
                        return 0;
        } else {
                /* from VEX to VE0 */
                if (!ether_addr_equal(e->h_source, dev->dev_addr))
                        return 0;
        }

        return 1;
}

if only I didn't miss somthing obvious. Up to you. The patch looks great for me
in any way.

Acked-by: Cyrill Gorcunov <gorcu...@gmail.com>
_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to