From patchwork Fri Jan 6 20:31:33 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Antonio Quartulli X-Patchwork-Id: 1478 Return-Path: Received: from confino.investici.org (investici.nine.ch [217.150.252.179]) by open-mesh.org (Postfix) with ESMTPS id 4A96A60080D for ; Fri, 6 Jan 2012 21:32:10 +0100 (CET) Authentication-Results: open-mesh.org; dkim=pass (1024-bit key) header.i=@autistici.org; dkim-adsp=pass Received: from [217.150.252.179] (confino [217.150.252.179]) (Authenticated sender: ordex@autistici.org) by localhost (Postfix) with ESMTPSA id 7B2BBC8648; Fri, 6 Jan 2012 20:32:09 +0000 (UTC) X-DKIM: Sendmail DKIM Filter v2.8.2 confino.investici.org 7B2BBC8648 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=autistici.org; s=stigmate; t=1325881929; bh=EbZgKFvXFXIXZNgVH+u8S4/eQCo8oSlWhJYZbeRrbTc=; h=From:To:Cc:Subject:Date:Message-Id; b=VDMxuVDtTOR0+QPRsLqr+XAs4OUVcZYRvx5usxHKC7LzoxhhEB/2MVVfB7hFK2zLo YaKmzIGKMBXweB5XiR31Dt5Rao4AG4R1FkbV10qXnB4T9cvp+GW+k8xWaB/8/OzVo6 bTzouNkysg4DhJJve7/gZHf3vtOUPlV5HwJSDhRw= From: Antonio Quartulli To: b.a.t.m.a.n@lists.open-mesh.org Date: Fri, 6 Jan 2012 21:31:33 +0100 Message-Id: <1325881894-18603-1-git-send-email-ordex@autistici.org> X-Mailer: git-send-email 1.7.3.4 Subject: [B.A.T.M.A.N.] [PATCH 1/2] batman-adv: set TT_CLIENT_NEW flag before invoking hash_add() X-BeenThere: b.a.t.m.a.n@lists.open-mesh.org X-Mailman-Version: 2.1.13 Precedence: list Reply-To: The list for a Better Approach To Mobile Ad-hoc Networking List-Id: The list for a Better Approach To Mobile Ad-hoc Networking List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Jan 2012 20:32:10 -0000 In case of a new tt_local_entry, the TT_CLIENT_NEW flag has to be set before adding such entry to the hash table. Otherwise, a concurrent a tt_query_reply forging operation could select such entry (as it is already in the hash table) even if it should not. Signed-off-by: Antonio Quartulli --- translation-table.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) diff --git a/translation-table.c b/translation-table.c index 7ea4c42..b493ab4 100644 --- a/translation-table.c +++ b/translation-table.c @@ -210,6 +210,11 @@ void tt_local_add(struct net_device *soft_iface, const uint8_t *addr, if (compare_eth(addr, soft_iface->dev_addr)) tt_local_entry->common.flags |= TT_CLIENT_NOPURGE; + /* The local entry has to be marked as NEW to avoid to send it in + * a full table response going out before the next ttvn increment + * (consistency check) */ + tt_local_entry->common.flags |= TT_CLIENT_NEW; + hash_added = hash_add(bat_priv->tt_local_hash, compare_tt, choose_orig, &tt_local_entry->common, &tt_local_entry->common.hash_entry); @@ -222,11 +227,6 @@ void tt_local_add(struct net_device *soft_iface, const uint8_t *addr, tt_local_event(bat_priv, addr, tt_local_entry->common.flags); - /* The local entry has to be marked as NEW to avoid to send it in - * a full table response going out before the next ttvn increment - * (consistency check) */ - tt_local_entry->common.flags |= TT_CLIENT_NEW; - /* remove address from global hash if present */ tt_global_entry = tt_global_hash_find(bat_priv, addr);