From dae897854b0adea808737416549aef23c8997c8d Mon Sep 17 00:00:00 2001 From: Andrew Zaborowski Date: Thu, 9 Jun 2016 19:55:20 +0200 Subject: [PATCH] network: return boolean from network_rankmod Since the rankmod value only makes sense for autoconnectable networks, change network_rankmod to return an indication of whether the rankmod is valid as a boolean instead of as a double, as discussed before. --- src/network.c | 11 ++++++----- src/network.h | 2 +- src/wiphy.c | 4 ++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/network.c b/src/network.c index 80470f31..4cdcede2 100644 --- a/src/network.c +++ b/src/network.c @@ -207,7 +207,7 @@ static const double rankmod_table[] = { 0.2913406263, 0.2899228820, 0.2885345572, 0.2871745887, }; -double network_rankmod(uint32_t type, const char *ssid) +bool network_rankmod(const struct network *network, double *rankmod) { const struct l_queue_entry *entry; int n; @@ -217,10 +217,10 @@ double network_rankmod(uint32_t type, const char *ssid) entry = entry->next, n += 1) { const struct network_info *info = entry->data; - if (info->type != type) + if (info->type != network->security) continue; - if (strcmp(info->ssid, ssid)) + if (strcmp(info->ssid, network->ssid)) continue; nmax = L_ARRAY_SIZE(rankmod_table); @@ -228,10 +228,11 @@ double network_rankmod(uint32_t type, const char *ssid) if (n >= nmax) n = nmax - 1; - return rankmod_table[n]; + *rankmod = rankmod_table[n]; + return true; } - return 0.0; + return false; } struct network *network_create(struct device *device, diff --git a/src/network.h b/src/network.h index 340715f2..09de2b2a 100644 --- a/src/network.h +++ b/src/network.h @@ -28,7 +28,7 @@ struct network; bool network_seen(struct network *network); bool network_connected(struct network *network); void network_disconnected(struct network *network); -double network_rankmod(uint32_t type, const char *ssid); +bool network_rankmod(const struct network *network, double *rankmod); struct network *network_create(struct device *device, uint8_t *ssid, uint8_t ssid_len, diff --git a/src/wiphy.c b/src/wiphy.c index 84e25d13..aeb87e1e 100644 --- a/src/wiphy.c +++ b/src/wiphy.c @@ -1267,8 +1267,8 @@ static void process_bss(struct device *device, struct scan_bss *bss) network_bss_add(network, bss); - rankmod = network_rankmod(security, network_get_ssid(network)); - if (rankmod == 0.0) + /* See if network is autoconnectable (is a known network) */ + if (!network_rankmod(network, &rankmod)) return; entry = l_new(struct autoconnect_entry, 1);