Skip to content

Commit

Permalink
batman-adv: fix visualization output without neighbors on the primary…
Browse files Browse the repository at this point in the history
… 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@universe-factory.net>
Signed-off-by: Sven Eckelmann <sven@narfation.org>
  • Loading branch information
Matthias Schiffer authored and Antonio Quartulli committed Jun 18, 2012
1 parent 16a7034 commit beeb96a
Showing 1 changed file with 14 additions and 7 deletions.
21 changes: 14 additions & 7 deletions net/batman-adv/vis.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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) {
Expand Down Expand Up @@ -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) {
Expand Down

0 comments on commit beeb96a

Please sign in to comment.