You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
batman-adv: create a common substructure for tt_global/local_entry
Several functions in the translation table management code assume that the tt_global_entry and tt_local_entry structures have the same initial fields such as 'addr' and 'hash_entry'. To improve the code readability and to avoid mistakes in later changes, a common substructure that substitute the shared fields has been introduced (struct tt_common_entry). Thanks to this modification, it has also been possible to slightly reduce the code length by merging some functions like compare_ltt/gtt() and tt_local/global_hash_find() Signed-off-by: Antonio Quartulli <ordex@autistici.org> Signed-off-by: Sven Eckelmann <sven@narfation.org>
This commit is contained in:
committed by
Sven Eckelmann
parent
ad24431277
commit
48100bac89
+157
-130
File diff suppressed because it is too large
Load Diff
@@ -222,24 +222,24 @@ struct socket_packet {
|
||||
struct icmp_packet_rr icmp_packet;
|
||||
};
|
||||
|
||||
struct tt_local_entry {
|
||||
struct tt_common_entry {
|
||||
uint8_t addr[ETH_ALEN];
|
||||
struct hlist_node hash_entry;
|
||||
unsigned long last_seen;
|
||||
uint16_t flags;
|
||||
atomic_t refcount;
|
||||
struct rcu_head rcu;
|
||||
};
|
||||
|
||||
struct tt_local_entry {
|
||||
struct tt_common_entry common;
|
||||
unsigned long last_seen;
|
||||
};
|
||||
|
||||
struct tt_global_entry {
|
||||
uint8_t addr[ETH_ALEN];
|
||||
struct hlist_node hash_entry; /* entry in the global table */
|
||||
struct tt_common_entry common;
|
||||
struct orig_node *orig_node;
|
||||
uint8_t ttvn;
|
||||
uint16_t flags; /* only TT_GLOBAL_ROAM is used */
|
||||
unsigned long roam_at; /* time at which TT_GLOBAL_ROAM was set */
|
||||
atomic_t refcount;
|
||||
struct rcu_head rcu;
|
||||
};
|
||||
|
||||
struct tt_change_node {
|
||||
|
||||
@@ -609,7 +609,7 @@ static int generate_vis_packet(struct bat_priv *bat_priv)
|
||||
struct vis_info *info = bat_priv->my_vis_info;
|
||||
struct vis_packet *packet = (struct vis_packet *)info->skb_packet->data;
|
||||
struct vis_info_entry *entry;
|
||||
struct tt_local_entry *tt_local_entry;
|
||||
struct tt_common_entry *tt_common_entry;
|
||||
int best_tq = -1;
|
||||
uint32_t i;
|
||||
|
||||
@@ -672,13 +672,13 @@ next:
|
||||
head = &hash->table[i];
|
||||
|
||||
rcu_read_lock();
|
||||
hlist_for_each_entry_rcu(tt_local_entry, node, head,
|
||||
hlist_for_each_entry_rcu(tt_common_entry, node, head,
|
||||
hash_entry) {
|
||||
entry = (struct vis_info_entry *)
|
||||
skb_put(info->skb_packet,
|
||||
sizeof(*entry));
|
||||
memset(entry->src, 0, ETH_ALEN);
|
||||
memcpy(entry->dest, tt_local_entry->addr, ETH_ALEN);
|
||||
memcpy(entry->dest, tt_common_entry->addr, ETH_ALEN);
|
||||
entry->quality = 0; /* 0 means TT */
|
||||
packet->entries++;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user