summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancesco Giudici <fgiudici@redhat.com>2017-05-03 18:05:44 +0200
committerFrancesco Giudici <fgiudici@redhat.com>2017-05-03 19:20:42 +0200
commitc75c3133f8039c3eae05bf2aa3cbba71c9c94d15 (patch)
treea437345311559896429f681458ece9d9bfc734b2
parent690d3c2314874496817aaa3020a9b6b04fa4b0f1 (diff)
downloadNetworkManager-fg/concheck.tar.gz
device: add default route penalty only if concheck is enabledfg/concheck
If we don't have connection checking functionality just avoid adding a penalty to the defaut route of newly activated connections.
-rw-r--r--src/devices/nm-device.c6
-rw-r--r--src/nm-connectivity.c8
-rw-r--r--src/nm-connectivity.h1
3 files changed, 13 insertions, 2 deletions
diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c
index 603924558c..541f1eb5e8 100644
--- a/src/devices/nm-device.c
+++ b/src/devices/nm-device.c
@@ -1499,18 +1499,20 @@ nm_device_get_priority (NMDevice *self)
static guint32
route_metric_with_penalty (NMDevice *self, guint32 metric)
{
+#if WITH_CONCHECK
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self);
const guint32 PENALTY = 20000;
/* Beware: for IPv6, a metric of 0 effectively means 1024.
* Only pass a normalized IPv6 metric (nm_utils_ip6_route_metric_normalize). */
- if (priv->connectivity_state != NM_CONNECTIVITY_FULL) {
+ if ( priv->connectivity_state != NM_CONNECTIVITY_FULL
+ && nm_connectivity_check_enabled (nm_connectivity_get ())) {
if (metric >= G_MAXUINT32 - PENALTY)
return G_MAXUINT32;
return metric + PENALTY;
}
-
+#endif
return metric;
}
diff --git a/src/nm-connectivity.c b/src/nm-connectivity.c
index fdd40b962e..c281eb1138 100644
--- a/src/nm-connectivity.c
+++ b/src/nm-connectivity.c
@@ -395,6 +395,14 @@ nm_connectivity_check_finish (NMConnectivity *self,
return (NMConnectivityState) g_simple_async_result_get_op_res_gssize (simple);
}
+gboolean
+nm_connectivity_check_enabled (NMConnectivity *self)
+{
+ NMConnectivityPrivate *priv = NM_CONNECTIVITY_GET_PRIVATE (self);
+
+ return (priv->uri && priv->interval && priv->curl_mhandle);
+}
+
/*****************************************************************************/
static gboolean
diff --git a/src/nm-connectivity.h b/src/nm-connectivity.h
index 0522381a91..d9a9f2338b 100644
--- a/src/nm-connectivity.h
+++ b/src/nm-connectivity.h
@@ -48,5 +48,6 @@ void nm_connectivity_check_async (NMConnectivity *self,
NMConnectivityState nm_connectivity_check_finish (NMConnectivity *self,
GAsyncResult *result,
GError **error);
+gboolean nm_connectivity_check_enabled (NMConnectivity *self);
#endif /* __NETWORKMANAGER_CONNECTIVITY_H__ */