On Wednesday, March 30, 2016 01:37:27 Roland Volkmann wrote:
> Let's have a look to the source code. The interesting part is function 
> "static void batadv_send_outstanding_bcast_packet(struct work_struct 
> *work)" in file "send.c". There you will find
> 
>      soft_iface = forw_packet->if_incoming->soft_iface;
> [...]
>      /* rebroadcast packet */
>      rcu_read_lock();
>      list_for_each_entry_rcu(hard_iface, &batadv_hardif_list, list) {
>          if (hard_iface->soft_iface != soft_iface)   /* !!! */
>              continue;
> 
>          if (forw_packet->num_packets >= hard_iface->num_bcasts)
>              continue;
> 
> The if-Statement marked with /* !!! */ results in "true", if 
> incoming-interface isn't identical to outgoing-interface. Because the 
> patch is included after this line, it is relevant for resending 
> broadcasts to the incoming interface only.

There seems to be a misunderstanding. With soft-interfaces batman-adv refers 
to the logic interface created for each mesh (often: bat0, bat1, etc). 
Consequently, the '!!!' marked if statement checks whether or not a given 
hard-interface (read: wlan0, eth0, etc) belongs to the same soft-interface the 
to be forwarded packet belongs to.

Hope that helps!

Cheers,
Marek

Attachment: signature.asc
Description: This is a digitally signed message part.

Reply via email to