Changeset 1589
- Timestamp:
- 03/10/10 22:48:40 (5 months ago)
- Location:
- trunk/batman-adv-kernelland
- Files:
-
- 3 modified
Legend:
- Unmodified
- Added
- Removed
-
trunk/batman-adv-kernelland/proc.c
r1573 r1589 374 374 struct vis_info_entry *entries; 375 375 HLIST_HEAD(vis_if_list); 376 struct if_list_entry *entry; 377 struct hlist_node *pos, *n; 376 378 int i; 377 379 char tmp_addr_str[ETH_STR_LEN]; … … 392 394 entries = (struct vis_info_entry *) 393 395 ((char *)info + sizeof(struct vis_info)); 394 addr_to_string(tmp_addr_str, info->packet.vis_orig);395 seq_printf(seq, "%s,", tmp_addr_str);396 396 397 397 for (i = 0; i < info->packet.entries; i++) { 398 proc_vis_read_entry(seq, &entries[i], &vis_if_list, 399 info->packet.vis_orig); 398 if (entries[i].quality == 0) 399 continue; 400 proc_vis_insert_interface(entries[i].src, &vis_if_list, 401 compare_orig(entries[i].src, 402 info->packet.vis_orig)); 400 403 } 401 404 402 /* add primary/secondary records */ 403 proc_vis_read_prim_sec(seq, &vis_if_list); 404 seq_printf(seq, "\n"); 405 hlist_for_each_entry(entry, pos, &vis_if_list, list) { 406 addr_to_string(tmp_addr_str, entry->addr); 407 seq_printf(seq, "%s,", tmp_addr_str); 408 409 for (i = 0; i < info->packet.entries; i++) 410 proc_vis_read_entry(seq, &entries[i], 411 entry->addr, entry->primary); 412 413 /* add primary/secondary records */ 414 if (compare_orig(entry->addr, info->packet.vis_orig)) 415 proc_vis_read_prim_sec(seq, &vis_if_list); 416 417 seq_printf(seq, "\n"); 418 } 419 420 hlist_for_each_entry_safe(entry, pos, n, &vis_if_list, list) { 421 hlist_del(&entry->list); 422 kfree(entry); 423 } 405 424 } 406 425 spin_unlock_irqrestore(&vis_hash_lock, flags); -
trunk/batman-adv-kernelland/vis.c
r1579 r1589 88 88 /* insert interface to the list of interfaces of one originator, if it 89 89 * does not already exist in the list */ 90 staticvoid proc_vis_insert_interface(const uint8_t *interface,90 void proc_vis_insert_interface(const uint8_t *interface, 91 91 struct hlist_head *if_list, 92 92 bool primary) … … 113 113 { 114 114 struct if_list_entry *entry; 115 struct hlist_node *pos , *n;115 struct hlist_node *pos; 116 116 char tmp_addr_str[ETH_STR_LEN]; 117 117 118 hlist_for_each_entry _safe(entry, pos, n, if_list, list) {119 if (entry->primary) {118 hlist_for_each_entry(entry, pos, if_list, list) { 119 if (entry->primary) 120 120 seq_printf(seq, "PRIMARY, "); 121 }else {121 else { 122 122 addr_to_string(tmp_addr_str, entry->addr); 123 123 seq_printf(seq, "SEC %s, ", tmp_addr_str); 124 124 } 125 126 hlist_del(&entry->list);127 kfree(entry);128 125 } 129 126 } … … 132 129 void proc_vis_read_entry(struct seq_file *seq, 133 130 struct vis_info_entry *entry, 134 struct hlist_head *if_list,135 uint8_t *vis_orig)131 uint8_t *src, 132 bool primary) 136 133 { 137 134 char to[40]; 138 135 139 136 addr_to_string(to, entry->dest); 140 if (entry->quality == 0) { 141 proc_vis_insert_interface(vis_orig, if_list, true); 137 if (primary && entry->quality == 0) 142 138 seq_printf(seq, "HNA %s, ", to); 143 } else { 144 proc_vis_insert_interface(entry->src, if_list, 145 compare_orig(entry->src, vis_orig)); 139 else if (compare_orig(entry->src, src)) 146 140 seq_printf(seq, "TQ %s %d, ", to, entry->quality); 147 }148 141 } 149 142 -
trunk/batman-adv-kernelland/vis.h
r1579 r1589 50 50 extern spinlock_t vis_hash_lock; 51 51 52 void proc_vis_insert_interface(const uint8_t *interface, 53 struct hlist_head *if_list, 54 bool primary); 52 55 void proc_vis_read_entry(struct seq_file *seq, 53 56 struct vis_info_entry *entry, 54 struct hlist_head *if_list,55 uint8_t *vis_orig);57 uint8_t *src, 58 bool primary); 56 59 void proc_vis_read_prim_sec(struct seq_file *seq, 57 60 struct hlist_head *if_list);
