lkml.org 
[lkml]   [2009]   [Nov]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 4/4] macvlan: export macvlan mode through netlink
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;
> +}


\
 
 \ /
  Last update: 2009-11-24 11:55    [W:0.093 / U:15.292 seconds]
©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site