batman-adv: skip the window protection test when the originator has no neighbours
authorAntonio Quartulli <ordex@autistici.org>
Sun, 26 Feb 2012 14:39:42 +0000 (15:39 +0100)
committerAntonio Quartulli <ordex@autistici.org>
Wed, 18 Apr 2012 07:54:02 +0000 (09:54 +0200)
When we receive an OGM from from a node for the first time, the last_real_seqno
field of the orig_node structure has not been initialised yet. The value of this
field is used to compute the current ogm-seqno window and therefore the
protection mechanism will probably drop the packet due to an out-of-window error.
To avoid this situation this patch adds a check to skip the window protection
mechanism if no neighbour nodes have already been added. When the first
neighbour node is added, the last_real_seqno field is initialised too.

Reported-by: Marek Lindner <lindner_marek@yahoo.de>
Signed-off-by: Antonio Quartulli <ordex@autistici.org>
net/batman-adv/bat_iv_ogm.c

index 1014210bb36594ce13e9c7eb7722a9aecf22ea57..8b2db2e76c7ee8ee903ecc5f3a70b6673dfcb975 100644 (file)
@@ -861,7 +861,8 @@ static int bat_iv_ogm_update_seqnos(const struct ethhdr *ethhdr,
        seq_diff = batman_ogm_packet->seqno - orig_node->last_real_seqno;
 
        /* signalize caller that the packet is to be dropped. */
-       if (window_protected(bat_priv, seq_diff,
+       if (!hlist_empty(&orig_node->neigh_list) &&
+           window_protected(bat_priv, seq_diff,
                             &orig_node->batman_seqno_reset))
                goto out;