Arnd Bergmann wrote:
> @@ -600,6 +594,18 @@ static int macvlan_validate(struct nlattr *tb[], struct 
> nlattr *data[])
>               if (!is_valid_ether_addr(nla_data(tb[IFLA_ADDRESS])))
>                       return -EADDRNOTAVAIL;
>       }
> +
> +     if (data && data[IFLA_MACVLAN_MODE]) {
> +             u32 mode = nla_get_u32(data[IFLA_MACVLAN_MODE]);
> +             switch (mode) {
> +             case MACVLAN_MODE_PRIVATE:
> +             case MACVLAN_MODE_VEPA:
> +             case MACVLAN_MODE_BRIDGE:
> +                     break;
> +             default:
> +                     return -EINVAL;

EINVAL is quite unspecific. In this case I think EOPNOTSUPP would
be fine and provide more information.

> +             }
> +     }
>       return 0;
>  }
> @@ -664,6 +670,13 @@ static int macvlan_newlink(struct net *src_net, struct 
> net_device *dev,
>       vlan->dev      = dev;
>       vlan->port     = port;
>  
> +     vlan->mode     = MACVLAN_MODE_VEPA;
> +     if (data && data[IFLA_MACVLAN_MODE]) {
> +             u32 mode = nla_get_u32(data[IFLA_MACVLAN_MODE]);
> +
> +             vlan->mode     = mode;

This looks a bit strange, like cut-and-paste without reformatting :)
I'd suggest to simply use "vlan->mode = nla_get_u32(...)".

> +     }
> +
>       err = register_netdevice(dev);
>       if (err < 0)
>               return err;
> @@ -685,6 +698,39 @@ static void macvlan_dellink(struct net_device *dev, 
> struct list_head *head)
>               macvlan_port_destroy(port->dev);
>  }
>  
> +static int macvlan_changelink(struct net_device *dev,
> +             struct nlattr *tb[], struct nlattr *data[])
> +{
> +     struct macvlan_dev *vlan = netdev_priv(dev);
> +     if (data && data[IFLA_MACVLAN_MODE]) {
> +             u32 mode = nla_get_u32(data[IFLA_MACVLAN_MODE]);
> +             vlan->mode     = mode;

Same here.

> +     }
> +
> +     return 0;
> +}
_______________________________________________
Bridge mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/bridge

Reply via email to