|
@@ -477,11 +477,15 @@ bool batadv_tt_local_add(struct net_device *soft_iface, const uint8_t *addr,
|
|
|
struct batadv_priv *bat_priv = netdev_priv(soft_iface);
|
|
|
struct batadv_tt_local_entry *tt_local;
|
|
|
struct batadv_tt_global_entry *tt_global;
|
|
|
+ struct net_device *in_dev = NULL;
|
|
|
struct hlist_head *head;
|
|
|
struct batadv_tt_orig_list_entry *orig_entry;
|
|
|
int hash_added, table_size, packet_size_max;
|
|
|
bool ret = false, roamed_back = false;
|
|
|
|
|
|
+ if (ifindex != BATADV_NULL_IFINDEX)
|
|
|
+ in_dev = dev_get_by_index(&init_net, ifindex);
|
|
|
+
|
|
|
tt_local = batadv_tt_local_hash_find(bat_priv, addr, vid);
|
|
|
tt_global = batadv_tt_global_hash_find(bat_priv, addr, vid);
|
|
|
|
|
@@ -542,7 +546,7 @@ bool batadv_tt_local_add(struct net_device *soft_iface, const uint8_t *addr,
|
|
|
*/
|
|
|
tt_local->common.flags = BATADV_TT_CLIENT_NEW;
|
|
|
tt_local->common.vid = vid;
|
|
|
- if (batadv_is_wifi_iface(ifindex))
|
|
|
+ if (batadv_is_wifi_netdev(in_dev))
|
|
|
tt_local->common.flags |= BATADV_TT_CLIENT_WIFI;
|
|
|
atomic_set(&tt_local->common.refcount, 2);
|
|
|
tt_local->last_seen = jiffies;
|
|
@@ -595,6 +599,8 @@ check_roaming:
|
|
|
ret = true;
|
|
|
|
|
|
out:
|
|
|
+ if (in_dev)
|
|
|
+ dev_put(in_dev);
|
|
|
if (tt_local)
|
|
|
batadv_tt_local_entry_free_ref(tt_local);
|
|
|
if (tt_global)
|