In case of re-routing, the old_ttvn must be saved before being overwritten, otherwise the debug message will obviously print the new one.
Signed-off-by: Antonio Quartulli ordex@autistici.org --- routing.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/routing.c b/routing.c index c8d2fbf..6a84f0d 100644 --- a/routing.c +++ b/routing.c @@ -929,7 +929,7 @@ out:
static int batadv_check_unicast_ttvn(struct batadv_priv *bat_priv, struct sk_buff *skb) { - uint8_t curr_ttvn; + uint8_t curr_ttvn, old_ttvn; struct batadv_orig_node *orig_node; struct ethhdr *ethhdr; struct batadv_hard_iface *primary_if; @@ -994,6 +994,7 @@ static int batadv_check_unicast_ttvn(struct batadv_priv *bat_priv, if (!is_old_ttvn) return 1;
+ old_ttvn = unicast_packet->ttvn; /* the packet was forged based on outdated network information. Its * destination can possibly be updated and forwarded towards the new * target host @@ -1003,7 +1004,7 @@ static int batadv_check_unicast_ttvn(struct batadv_priv *bat_priv, net_ratelimited_function(batadv_dbg, BATADV_DBG_TT, bat_priv, "Rerouting unicast packet to %pM (dst=%pM): TTVN mismatch old_ttvn=%u new_ttvn=%u\n", unicast_packet->dest, ethhdr->h_dest, - unicast_packet->ttvn, curr_ttvn); + old_ttvn, curr_ttvn); return 1; }