The following commit has been merged in the merge/master branch: commit 94668774eec54bf17022f005c47ba3d9aa237e4e Merge: 3b9bcebb9aa41474afaee34286d8a09a751a66fa bc91a4a7e00c9610dd6285e5ca8bea9cb208cbe7 Author: Antonio Quartulli ordex@autistici.org Date: Fri Nov 9 11:27:09 2012 +0100
Merge remote-tracking branch 'pkg/next' into merge/master
diff --combined net/batman-adv/routing.c index 63ff456,1aa1722..1aa1722 --- a/net/batman-adv/routing.c +++ b/net/batman-adv/routing.c @@@ -877,11 -877,10 +877,10 @@@ out * @bat_priv: the bat priv with all the soft interface information * @unicast_packet: the unicast header to be updated * @dst_addr: the payload destination - * @msg: the message to print explaining the reason of the requested re-route * - * Search the global translation table for dst_addr and update the unicast - * header with the new corresponding information (originator address where the - * destination client currently is and its known TTVN) + * Search the translation table for dst_addr and update the unicast header with + * the new corresponding information (originator address where the destination + * client currently is and its known TTVN) * * Returns true if the packet header has been updated, false otherwise */ diff --combined net/batman-adv/translation-table.c index f3628a2,cb0281a..cb0281a --- a/net/batman-adv/translation-table.c +++ b/net/batman-adv/translation-table.c @@@ -336,8 -336,10 +336,10 @@@ add_event batadv_tt_local_event(bat_priv, addr, tt_local->common.flags);
check_roaming: - /* Check whether it is a roaming! */ - if (tt_global) { + /* Check whether it is a roaming, but don't do anything if the roaming + * process has already been handled + */ + if (tt_global && !(tt_global->common.flags & BATADV_TT_CLIENT_ROAM)) { /* These node are probably going to update their tt table */ head = &tt_global->orig_list; rcu_read_lock(); @@@ -859,6 -861,12 +861,12 @@@ int batadv_tt_global_add(struct batadv_ */ common->flags &= ~BATADV_TT_CLIENT_TEMP;
+ /* the change can carry possible "attribute" flags like the + * TT_CLIENT_WIFI, therefore they have to be copied in the + * client entry + */ + tt_global_entry->common.flags |= flags; + /* If there is the BATADV_TT_CLIENT_ROAM flag set, there is only * one originator left in the list and we previously received a * delete + roaming change for this originator. @@@ -1610,7 -1618,7 +1618,7 @@@ batadv_tt_response_fill_table(uint16_t
memcpy(tt_change->addr, tt_common_entry->addr, ETH_ALEN); - tt_change->flags = BATADV_NO_FLAGS; + tt_change->flags = tt_common_entry->flags;
tt_count++; tt_change++; @@@ -2034,7 -2042,8 +2042,8 @@@ bool batadv_is_my_client(struct batadv_ /* Check if the client has been logically deleted (but is kept for * consistency purpose) */ - if (tt_local_entry->common.flags & BATADV_TT_CLIENT_PENDING) + if ((tt_local_entry->common.flags & BATADV_TT_CLIENT_PENDING) || + (tt_local_entry->common.flags & BATADV_TT_CLIENT_ROAM)) goto out; ret = true; out: