[linux-next] LinuxNextTracking branch, master, updated. next-20120621

batman at open-mesh.org batman at open-mesh.org
Fri Jun 22 00:17:06 CEST 2012


The following commit has been merged in the master branch:
commit beeb96a4142180c34ddf592aef5a278c2d676bf0
Author: Matthias Schiffer <mschiffer at universe-factory.net>
Date:   Sat May 5 17:51:53 2012 +0200

    batman-adv: fix visualization output without neighbors on the primary interface
    
    The primary entry and the corresponding secondary entries are missing when there
    are no neighbors on the primary interface. This also causes the TT entries to
    miss and makes nodes with multiply secondary interface fall apart since there
    is no way to see they are related without a primary entry.
    
    Fix this by always emitting a primary entry.
    
    Signed-off-by: Matthias Schiffer <mschiffer at universe-factory.net>
    Signed-off-by: Sven Eckelmann <sven at narfation.org>

diff --git a/net/batman-adv/vis.c b/net/batman-adv/vis.c
index 411c0e1..01d5da5 100644
--- a/net/batman-adv/vis.c
+++ b/net/batman-adv/vis.c
@@ -207,7 +207,6 @@ int vis_seq_print_text(struct seq_file *seq, void *offset)
 	int vis_server = atomic_read(&bat_priv->vis_mode);
 	size_t buff_pos, buf_size;
 	char *buff;
-	int compare;
 
 	primary_if = primary_if_get_selected(bat_priv);
 	if (!primary_if)
@@ -228,14 +227,18 @@ int vis_seq_print_text(struct seq_file *seq, void *offset)
 			entries = (struct vis_info_entry *)
 				((char *)packet + sizeof(*packet));
 
+			vis_data_insert_interface(packet->vis_orig,
+						  &vis_if_list, true);
+
 			for (j = 0; j < packet->entries; j++) {
 				if (entries[j].quality == 0)
 					continue;
-				compare =
-				 compare_eth(entries[j].src, packet->vis_orig);
+				if (compare_eth(entries[j].src,
+						packet->vis_orig))
+					continue;
 				vis_data_insert_interface(entries[j].src,
 							  &vis_if_list,
-							  compare);
+							  false);
 			}
 
 			hlist_for_each_entry(entry, pos, &vis_if_list, list) {
@@ -276,14 +279,18 @@ int vis_seq_print_text(struct seq_file *seq, void *offset)
 			entries = (struct vis_info_entry *)
 				((char *)packet + sizeof(*packet));
 
+			vis_data_insert_interface(packet->vis_orig,
+						  &vis_if_list, true);
+
 			for (j = 0; j < packet->entries; j++) {
 				if (entries[j].quality == 0)
 					continue;
-				compare =
-				 compare_eth(entries[j].src, packet->vis_orig);
+				if (compare_eth(entries[j].src,
+						packet->vis_orig))
+					continue;
 				vis_data_insert_interface(entries[j].src,
 							  &vis_if_list,
-							  compare);
+							  false);
 			}
 
 			hlist_for_each_entry(entry, pos, &vis_if_list, list) {

-- 
LinuxNextTracking


More information about the linux-merge mailing list