device: Move the different device type registrations to the device type file
[project/netifd.git] / alias.c
diff --git a/alias.c b/alias.c
index e4bb700..649f2d1 100644 (file)
--- a/alias.c
+++ b/alias.c
@@ -30,8 +30,6 @@ struct alias_device {
        char name[];
 };
 
-static const struct device_type alias_device_type;
-
 static void alias_set_device(struct alias_device *alias, struct device *dev)
 {
        if (dev == alias->dep.dev) {
@@ -59,12 +57,11 @@ static void alias_set_device(struct alias_device *alias, struct device *dev)
        alias->dev.hidden = !dev;
        if (dev) {
                device_set_ifindex(&alias->dev, dev->ifindex);
-               strcpy(alias->dev.ifname, dev->ifname);
-               device_broadcast_event(&alias->dev, DEV_EVENT_UPDATE_IFNAME);
+               device_set_ifname(&alias->dev, dev->ifname);
                device_add_user(&alias->dep, dev);
        } else {
-               alias->dev.ifname[0] = 0;
-               device_broadcast_event(&alias->dev, DEV_EVENT_UPDATE_IFNAME);
+               device_set_ifname(&alias->dev, "");
+               device_set_link(&alias->dev, false);
        }
 }
 
@@ -114,7 +111,8 @@ static void alias_device_cb(struct device_user *dep, enum device_event ev)
 }
 
 static struct device *
-alias_device_create(const char *name, struct blob_attr *attr)
+alias_device_create(const char *name, struct device_type *devtype,
+                   struct blob_attr *attr)
 {
        struct alias_device *alias;
 
@@ -125,7 +123,7 @@ alias_device_create(const char *name, struct blob_attr *attr)
        strcpy(alias->name, name);
        alias->dev.set_state = alias_device_set_state;
        alias->dev.hidden = true;
-       device_init_virtual(&alias->dev, &alias_device_type, NULL);
+       device_init_virtual(&alias->dev, devtype, NULL);
        alias->avl.key = alias->name;
        avl_insert(&aliases, &alias->avl);
        alias->dep.alias = true;
@@ -163,7 +161,7 @@ static int alias_check_state(struct device *dev)
        return 0;
 }
 
-static const struct device_type alias_device_type = {
+static struct device_type alias_device_type = {
        .name = "Network alias",
        .create = alias_device_create,
        .free = alias_device_free,
@@ -193,7 +191,7 @@ device_alias_get(const char *name)
        if (alias)
                return &alias->dev;
 
-       return alias_device_create(name, NULL);
+       return alias_device_create(name, &alias_device_type, NULL);
 }
 
 static void __init alias_init(void)