|
@@ -989,6 +989,32 @@ void batadv_hardif_remove_interfaces(void)
|
|
|
rtnl_unlock();
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * batadv_hard_if_event_softif() - Handle events for soft interfaces
|
|
|
+ * @event: NETDEV_* event to handle
|
|
|
+ * @net_dev: net_device which generated an event
|
|
|
+ *
|
|
|
+ * Return: NOTIFY_* result
|
|
|
+ */
|
|
|
+static int batadv_hard_if_event_softif(unsigned long event,
|
|
|
+ struct net_device *net_dev)
|
|
|
+{
|
|
|
+ struct batadv_priv *bat_priv;
|
|
|
+
|
|
|
+ switch (event) {
|
|
|
+ case NETDEV_REGISTER:
|
|
|
+ batadv_sysfs_add_meshif(net_dev);
|
|
|
+ bat_priv = netdev_priv(net_dev);
|
|
|
+ batadv_softif_create_vlan(bat_priv, BATADV_NO_FLAGS);
|
|
|
+ break;
|
|
|
+ case NETDEV_CHANGENAME:
|
|
|
+ batadv_debugfs_rename_meshif(net_dev);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ return NOTIFY_DONE;
|
|
|
+}
|
|
|
+
|
|
|
static int batadv_hard_if_event(struct notifier_block *this,
|
|
|
unsigned long event, void *ptr)
|
|
|
{
|
|
@@ -997,12 +1023,8 @@ static int batadv_hard_if_event(struct notifier_block *this,
|
|
|
struct batadv_hard_iface *primary_if = NULL;
|
|
|
struct batadv_priv *bat_priv;
|
|
|
|
|
|
- if (batadv_softif_is_valid(net_dev) && event == NETDEV_REGISTER) {
|
|
|
- batadv_sysfs_add_meshif(net_dev);
|
|
|
- bat_priv = netdev_priv(net_dev);
|
|
|
- batadv_softif_create_vlan(bat_priv, BATADV_NO_FLAGS);
|
|
|
- return NOTIFY_DONE;
|
|
|
- }
|
|
|
+ if (batadv_softif_is_valid(net_dev))
|
|
|
+ return batadv_hard_if_event_softif(event, net_dev);
|
|
|
|
|
|
hard_iface = batadv_hardif_get_by_netdev(net_dev);
|
|
|
if (!hard_iface && (event == NETDEV_REGISTER ||
|
|
@@ -1051,6 +1073,9 @@ static int batadv_hard_if_event(struct notifier_block *this,
|
|
|
if (batadv_is_wifi_hardif(hard_iface))
|
|
|
hard_iface->num_bcasts = BATADV_NUM_BCASTS_WIRELESS;
|
|
|
break;
|
|
|
+ case NETDEV_CHANGENAME:
|
|
|
+ batadv_debugfs_rename_hardif(hard_iface);
|
|
|
+ break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|