diff options
author | Francesco Giudici <fgiudici@redhat.com> | 2017-05-03 18:05:44 +0200 |
---|---|---|
committer | Francesco Giudici <fgiudici@redhat.com> | 2017-05-04 11:07:40 +0200 |
commit | 2524a6f8528c6f7b013f1404452d3aa7e4e4ab39 (patch) | |
tree | 9e21ea0ff2a12d92a8db02861865354cf1536af4 | |
parent | 41f6540afd9d49023685d6be4ee26e245859fe71 (diff) | |
download | NetworkManager-2524a6f8528c6f7b013f1404452d3aa7e4e4ab39.tar.gz |
device: add default route penalty only if concheck is enabled
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.c | 6 | ||||
-rw-r--r-- | src/nm-connectivity.c | 8 | ||||
-rw-r--r-- | src/nm-connectivity.h | 1 |
3 files changed, 13 insertions, 2 deletions
diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c index eae1a30d32..77adda7f2a 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 68b23b909f..cf9d3c5d0f 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__ */ |