On 27.10.2021 16:43, Cyrill Gorcunov wrote:
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.

Nice idea, sent in v2.


Acked-by: Cyrill Gorcunov <gorcu...@gmail.com>


--
Best regards, Tikhomirov Pavel
Software Developer, Virtuozzo.
_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to