From a37f642f8f1bd6f7146b858f4f20cf6241fc5848 Mon Sep 17 00:00:00 2001 From: Henning Rogge Date: Sat, 5 Sep 2009 14:38:06 +0200 Subject: [PATCH] Some bugfixes for lqmult in "same IP on different interfaces" situations. Don't do this ! --- src/fpm.c | 9 +++------ src/fpm.h | 2 +- src/link_set.c | 4 +++- src/lq_plugin_default_ff.c | 2 +- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/fpm.c b/src/fpm.c index 681f9a62..ad66a1af 100644 --- a/src/fpm.c +++ b/src/fpm.c @@ -48,13 +48,10 @@ #ifndef NDEBUG fpm -itofpm(int i) +itofpm(sfpm i) { - fpm r; - assert(fpmtoi_def(FPM_MIN) <= i); - assert(i <= fpmtoi_def(FPM_INT_MAX)); - r = (fpm) itofpm_def(i); - return r; + assert(FPM_MIN <= i && i <= FPM_MAX); + return itofpm_def(i); } fpm diff --git a/src/fpm.h b/src/fpm.h index d471f822..5d6b5af5 100644 --- a/src/fpm.h +++ b/src/fpm.h @@ -136,7 +136,7 @@ typedef unsigned long ufpm; #else /* NDEBUG */ -fpm itofpm(int i); +fpm itofpm(sfpm i); fpm ftofpm(float f); int fpmtoi(fpm a); float fpmtof(fpm a); diff --git a/src/link_set.c b/src/link_set.c index 9ff8fea9..0fb4329c 100644 --- a/src/link_set.c +++ b/src/link_set.c @@ -42,6 +42,7 @@ /* * Link sensing database for the OLSR routing daemon */ +#include #include "defs.h" #include "link_set.h" @@ -290,7 +291,8 @@ set_loss_link_multiplier(struct link_entry *entry) struct ipaddr_str buf; /* find the interface for the link */ - inter = if_ifwithaddr(&entry->local_iface_addr); + assert(entry->if_name); + inter = if_ifwithname(entry->if_name); /* find the interface configuration for the interface */ for (cfg_inter = olsr_cnf->interfaces; cfg_inter; cfg_inter = cfg_inter->next) { diff --git a/src/lq_plugin_default_ff.c b/src/lq_plugin_default_ff.c index bde75123..811d03f0 100644 --- a/src/lq_plugin_default_ff.c +++ b/src/lq_plugin_default_ff.c @@ -149,7 +149,7 @@ default_lq_ff_timer(void __attribute__ ((unused)) * context) tlq->lq.valueLq = 0; } else { // start with link-loss-factor - ratio = fpmidiv(itofpm(link->loss_link_multiplier), 65536); + ratio = fpmidiv(itofpm(link->loss_link_multiplier), LINK_LOSS_MULTIPLIER); // calculate received/(received + loss) factor ratio = fpmmuli(ratio, (int)received); -- 2.20.1