On Wed, Jan 23, 2013 at 06:11:54 +0100, Matthias Schiffer wrote:
> Due to duplicate address detection and other strange ARP packets, sometimes
> entries with broadcast MAC addresses or unspecified IP addresses would get 
> into
> the Distributed ARP Table. This patch prevents these and some other kinds of
> invalid entries from getting into the DAT.
> 
> Signed-off-by: Matthias Schiffer <[email protected]>
> ---
>  distributed-arp-table.c | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
> 
> diff --git a/distributed-arp-table.c b/distributed-arp-table.c
> index 9f4cff3..e28be57 100644
> --- a/distributed-arp-table.c
> +++ b/distributed-arp-table.c
> @@ -274,6 +274,18 @@ static void batadv_dat_entry_add(struct batadv_priv 
> *bat_priv, __be32 ip,
>       struct batadv_dat_entry *dat_entry;
>       int hash_added;
>  
> +     /* filter invalid MAC addresses that are sometimes used as
> +      * destinations of ARP replies
> +      */
> +     if (is_zero_ether_addr(mac_addr) || is_multicast_ether_addr(mac_addr))
> +             return;
> +
> +     /* ARP requests with unspecified source address are used for
> +      * duplicate address detection, we don't want those in the DAT either
> +      */
> +     if (!ip)

Hi Matthias,
what about using ipv4_is_zeronet() ? Even if this is a base case, I would rather
prefer to use an already implemented function.

Cheers,

-- 
Antonio Quartulli

..each of us alone is worth nothing..
Ernesto "Che" Guevara

Attachment: pgp724nXfm32z.pgp
Description: PGP signature

Reply via email to