in case of a new global entry added because of roaming, the roam_at field must be properly initiated with the current time. This value will be later use to purge this entry out on time out (if nobody claims it). Instead roam_at field is now set to zero in this situation leading to an immediate purging of the related entry.
Signed-off-by: Antonio Quartulli ordex@autistici.org --- translation-table.c | 6 ++++++ 1 file changed, 6 insertions(+)
diff --git a/translation-table.c b/translation-table.c index cacf7b7..ce3bf00 100644 --- a/translation-table.c +++ b/translation-table.c @@ -744,6 +744,12 @@ int batadv_tt_global_add(struct batadv_priv *bat_priv,
common->flags = flags; tt_global_entry->roam_at = 0; + /* node must store current time in case of roaming. This is + * needed to purge this entry out on timeout (if nobody claims + * it) + */ + if (flags & BATADV_TT_CLIENT_ROAM) + tt_global_entry->roam_at = jiffies; atomic_set(&common->refcount, 2); common->added_at = jiffies;