Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 340538
b: refs/heads/master
c: 7f91d06
h: refs/heads/master
v: v3
  • Loading branch information
Antonio Quartulli committed Oct 29, 2012
1 parent dcb6319 commit 4eb571e
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 10 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 9f9ff08d26b2f6ecea7900a9c9543c627cd95e56
refs/heads/master: 7f91d06c90204227e91a1332c8c8e527009ec778
31 changes: 25 additions & 6 deletions trunk/net/batman-adv/translation-table.c
Original file line number Diff line number Diff line change
Expand Up @@ -489,24 +489,39 @@ batadv_tt_local_set_pending(struct batadv_priv *bat_priv,
tt_local_entry->common.addr, message);
}

void batadv_tt_local_remove(struct batadv_priv *bat_priv, const uint8_t *addr,
const char *message, bool roaming)
/**
* batadv_tt_local_remove - logically remove an entry from the local table
* @bat_priv: the bat priv with all the soft interface information
* @addr: the MAC address of the client to remove
* @message: message to append to the log on deletion
* @roaming: true if the deletion is due to a roaming event
*
* Returns the flags assigned to the local entry before being deleted
*/
uint16_t batadv_tt_local_remove(struct batadv_priv *bat_priv,
const uint8_t *addr, const char *message,
bool roaming)
{
struct batadv_tt_local_entry *tt_local_entry = NULL;
uint16_t flags;
uint16_t flags, curr_flags = BATADV_NO_FLAGS;

tt_local_entry = batadv_tt_local_hash_find(bat_priv, addr);
if (!tt_local_entry)
goto out;

curr_flags = tt_local_entry->common.flags;

flags = BATADV_TT_CLIENT_DEL;
if (roaming)
flags |= BATADV_TT_CLIENT_ROAM;

batadv_tt_local_set_pending(bat_priv, tt_local_entry, flags, message);

out:
if (tt_local_entry)
batadv_tt_local_entry_free_ref(tt_local_entry);

return curr_flags;
}

static void batadv_tt_local_purge_list(struct batadv_priv *bat_priv,
Expand Down Expand Up @@ -713,6 +728,7 @@ int batadv_tt_global_add(struct batadv_priv *bat_priv,
int ret = 0;
int hash_added;
struct batadv_tt_common_entry *common;
uint16_t local_flags;

tt_global_entry = batadv_tt_global_hash_find(bat_priv, tt_addr);

Expand Down Expand Up @@ -785,10 +801,13 @@ int batadv_tt_global_add(struct batadv_priv *bat_priv,
ret = 1;

out_remove:

/* remove address from local hash if present */
batadv_tt_local_remove(bat_priv, tt_global_entry->common.addr,
"global tt received",
flags & BATADV_TT_CLIENT_ROAM);
local_flags = batadv_tt_local_remove(bat_priv, tt_addr,
"global tt received",
flags & BATADV_TT_CLIENT_ROAM);
tt_global_entry->common.flags |= local_flags & BATADV_TT_CLIENT_WIFI;

out:
if (tt_global_entry)
batadv_tt_global_entry_free_ref(tt_global_entry);
Expand Down
6 changes: 3 additions & 3 deletions trunk/net/batman-adv/translation-table.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@ int batadv_tt_len(int changes_num);
int batadv_tt_init(struct batadv_priv *bat_priv);
void batadv_tt_local_add(struct net_device *soft_iface, const uint8_t *addr,
int ifindex);
void batadv_tt_local_remove(struct batadv_priv *bat_priv,
const uint8_t *addr, const char *message,
bool roaming);
uint16_t batadv_tt_local_remove(struct batadv_priv *bat_priv,
const uint8_t *addr, const char *message,
bool roaming);
int batadv_tt_local_seq_print_text(struct seq_file *seq, void *offset);
void batadv_tt_global_add_orig(struct batadv_priv *bat_priv,
struct batadv_orig_node *orig_node,
Expand Down

0 comments on commit 4eb571e

Please sign in to comment.