Hi,

On 14/02/2019 16:52, Linus Lüssing wrote:
> Currently incoming ARP Replies, for example via a DHT-PUT message, do
> not update the timeout for an already existing DAT entry. These ARP
> Replies are dropped instead.
> 
> This however defeats the purpose of the DHCPACK snooping, for instance.
> Right now, a DAT entry in the DHT will be purged every five minutes,
> likely leading to a mesh-wide ARP Request broadcast after this timeout.
> Which then recreates the entry. The idea of the DHCPACK snooping is to
> be able to update an entry before a timeout happens, to avoid ARP Request
> flooding.
> 
> This patch fixes this issue by updating a DAT entry on incoming
> ARP Replies even if a matching DAT entry already exists. While still
> filtering the ARP Reply towards the soft-interface, to avoid duplicate
> messages on the client device side.
> 
> Signed-off-by: Linus Lüssing <linus.luess...@c0d3.blue>
> ---
> 
> This patch was verified in VMs via gratuitous ARP Replies generated by
> "mausezahn", together with the
> "batman-adv: allow snooping gratuitous ARP Replies" patch.
> 
> Before this patch, the timeout observed via "batctl dc" would continue
> to increase on gratuitous ARP Reply reception. After this patch, the
> last-seen value was reset to 0 successfully.
> ---
>  net/batman-adv/distributed-arp-table.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/net/batman-adv/distributed-arp-table.c 
> b/net/batman-adv/distributed-arp-table.c
> index 310a4f35..8d290da0 100644
> --- a/net/batman-adv/distributed-arp-table.c
> +++ b/net/batman-adv/distributed-arp-table.c
> @@ -1444,7 +1444,6 @@ bool batadv_dat_snoop_incoming_arp_reply(struct 
> batadv_priv *bat_priv,
>                          hw_src, &ip_src, hw_dst, &ip_dst,
>                          dat_entry->mac_addr, &dat_entry->ip);
>               dropped = true;
> -             goto out;
>       }
>  
>       /* Update our internal cache with both the IP addresses the node got
> @@ -1453,6 +1452,9 @@ bool batadv_dat_snoop_incoming_arp_reply(struct 
> batadv_priv *bat_priv,
>       batadv_dat_entry_add(bat_priv, ip_src, hw_src, vid);
>       batadv_dat_entry_add(bat_priv, ip_dst, hw_dst, vid);
>  
> +     if (dropped)
> +             goto out;
> +
>       /* If BLA is enabled, only forward ARP replies if we have claimed the
>        * source of the ARP reply or if no one else of the same backbone has
>        * already claimed that client. This prevents that different gateways
> 

The patch makes sense, especially because this change will allow to
"refresh" entries before they expire (No matter how the ARP reply was
generated)

Acked-by: Antonio Quartulli <a...@unstable.cc>


-- 
Antonio Quartulli

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to