Using the config below a dotted vlan interface stays down as get_vlan_device
does not find the device due to the aliased device stacked on top of the base
device.
As all devices; aliased devices being the exception; are in the device list
use device_find to find the device when setting the link state
config interface 'test'
option proto 'static'
option ipaddr '192.168.2.1'
option netmask '255.255.255.0'
config interface 'test2'
option ifname '@test.1'
option proto 'dhcp'
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
return dev;
}
+struct device *
+device_find(const char *name)
+{
+ struct device *dev;
+
+ return avl_find_element(&devices, name, dev, avl);
+}
+
struct device *
device_get(const char *name, int create)
{
void device_init_virtual(struct device *dev, const struct device_type *type, const char *name);
int device_init(struct device *iface, const struct device_type *type, const char *ifname);
-void device_cleanup(struct device *iface);
+void device_cleanup(struct device *dev);
+struct device *device_find(const char *name);
struct device *device_get(const char *name, int create);
void device_add_user(struct device_user *dep, struct device *iface);
void device_remove_user(struct device_user *dep);
if (!nla[IFLA_IFNAME])
goto out;
- struct device *dev = device_get(nla_data(nla[IFLA_IFNAME]), false);
+ struct device *dev = device_find(nla_data(nla[IFLA_IFNAME]));
if (!dev)
goto out;