|
@@ -621,6 +621,9 @@ out:
|
|
|
*/
|
|
|
static void batadv_dat_hash_free(struct batadv_priv *bat_priv)
|
|
|
{
|
|
|
+ if (!bat_priv->dat.hash)
|
|
|
+ return;
|
|
|
+
|
|
|
__batadv_dat_purge(bat_priv, NULL);
|
|
|
|
|
|
batadv_hash_destroy(bat_priv->dat.hash);
|
|
@@ -790,6 +793,9 @@ bool batadv_dat_snoop_outgoing_arp_request(struct batadv_priv *bat_priv,
|
|
|
struct sk_buff *skb_new;
|
|
|
struct batadv_hard_iface *primary_if = NULL;
|
|
|
|
|
|
+ if (!atomic_read(&bat_priv->distributed_arp_table))
|
|
|
+ goto out;
|
|
|
+
|
|
|
type = batadv_arp_get_type(bat_priv, skb, 0);
|
|
|
/* If the node gets an ARP_REQUEST it has to send a DHT_GET unicast
|
|
|
* message to the selected DHT candidates
|
|
@@ -861,6 +867,9 @@ bool batadv_dat_snoop_incoming_arp_request(struct batadv_priv *bat_priv,
|
|
|
bool ret = false;
|
|
|
int err;
|
|
|
|
|
|
+ if (!atomic_read(&bat_priv->distributed_arp_table))
|
|
|
+ goto out;
|
|
|
+
|
|
|
type = batadv_arp_get_type(bat_priv, skb, hdr_size);
|
|
|
if (type != ARPOP_REQUEST)
|
|
|
goto out;
|
|
@@ -924,6 +933,9 @@ void batadv_dat_snoop_outgoing_arp_reply(struct batadv_priv *bat_priv,
|
|
|
__be32 ip_src, ip_dst;
|
|
|
uint8_t *hw_src, *hw_dst;
|
|
|
|
|
|
+ if (!atomic_read(&bat_priv->distributed_arp_table))
|
|
|
+ return;
|
|
|
+
|
|
|
type = batadv_arp_get_type(bat_priv, skb, 0);
|
|
|
if (type != ARPOP_REPLY)
|
|
|
return;
|
|
@@ -959,6 +971,9 @@ bool batadv_dat_snoop_incoming_arp_reply(struct batadv_priv *bat_priv,
|
|
|
uint8_t *hw_src, *hw_dst;
|
|
|
bool ret = false;
|
|
|
|
|
|
+ if (!atomic_read(&bat_priv->distributed_arp_table))
|
|
|
+ goto out;
|
|
|
+
|
|
|
type = batadv_arp_get_type(bat_priv, skb, hdr_size);
|
|
|
if (type != ARPOP_REPLY)
|
|
|
goto out;
|
|
@@ -1003,6 +1018,9 @@ bool batadv_dat_drop_broadcast_packet(struct batadv_priv *bat_priv,
|
|
|
bool ret = false;
|
|
|
const size_t bcast_len = sizeof(struct batadv_bcast_packet);
|
|
|
|
|
|
+ if (!atomic_read(&bat_priv->distributed_arp_table))
|
|
|
+ goto out;
|
|
|
+
|
|
|
/* If this packet is an ARP_REQUEST and the node already has the
|
|
|
* information that it is going to ask, then the packet can be dropped
|
|
|
*/
|