>  
> +     neigh_entry = (struct neigh_entry *)(ndp_packet + 1);
> +     spin_lock_bh(&batman_if->neigh_list_lock);
> +     hlist_for_each_entry(neigh_node, node, &batman_if->neigh_list, list) {
> +             if (entries_len + sizeof(struct neigh_entry) >
> +                 skb_tailroom(skb))
> +                     break;
> +
> +             memcpy(neigh_entry->addr, neigh_node->addr, ETH_ALEN);
> +             neigh_entry->rq = neigh_node->rq;
> +             ndp_packet->num_neighbors++;
> +             neigh_entry++;
> +             entries_len += sizeof(struct neigh_entry);
> +     }
> +     spin_unlock_bh(&batman_if->neigh_list_lock);
> +     skb_put(skb, entries_len);

Hi Linus

It might be worth while putting in a rate limited warning message if
there is not enough space to put all the neighbors into the ndp
message. A lot depends on how big your ndp packet is. If you are
sending a 64 byte packet, you only have space for 4 neighbors.  When
the 5th neighbor appears, you are going to see problems, OGM will
work, but ndp won't etc. If you are sending MTU size packets, then it
is less of a problem, you can have over 180 neighbors, which should
not be a problem...

    Andrew

Reply via email to