summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLubomir Rintel <lkundrak@v3.sk>2014-11-10 18:48:37 +0100
committerLubomir Rintel <lkundrak@v3.sk>2014-12-11 16:18:05 +0100
commit0f098876137b4f510bb6c38af1a1ff70757ca679 (patch)
treec372a46a599155aba1b35abc59cc0cd6a8d44dc9
parent53380159ddd846b3741a2cd63e282176e472f381 (diff)
downloadNetworkManager-lr/bridge-delay.tar.gz
bridge: Properly check range of STP propertieslr/bridge-delay
If zero is out of range, only allow it when STP is disabled.
-rw-r--r--libnm-core/nm-setting-bridge.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/libnm-core/nm-setting-bridge.c b/libnm-core/nm-setting-bridge.c
index 51c6ac5a03..e223fc5c66 100644
--- a/libnm-core/nm-setting-bridge.c
+++ b/libnm-core/nm-setting-bridge.c
@@ -196,10 +196,14 @@ static inline gboolean
check_range (guint32 val,
guint32 min,
guint32 max,
+ gboolean zero_valid,
const char *prop,
GError **error)
{
- if ((val != 0) && (val < min || val > max)) {
+ if (zero_valid && val == 0)
+ return TRUE;
+
+ if (val < min || val > max) {
g_set_error (error,
NM_CONNECTION_ERROR,
NM_CONNECTION_ERROR_INVALID_PROPERTY,
@@ -228,6 +232,7 @@ verify (NMSetting *setting, NMConnection *connection, GError **error)
if (!check_range (priv->forward_delay,
BR_MIN_FORWARD_DELAY,
BR_MAX_FORWARD_DELAY,
+ !priv->stp,
NM_SETTING_BRIDGE_FORWARD_DELAY,
error))
return FALSE;
@@ -235,6 +240,7 @@ verify (NMSetting *setting, NMConnection *connection, GError **error)
if (!check_range (priv->hello_time,
BR_MIN_HELLO_TIME,
BR_MAX_HELLO_TIME,
+ !priv->stp,
NM_SETTING_BRIDGE_HELLO_TIME,
error))
return FALSE;
@@ -242,6 +248,7 @@ verify (NMSetting *setting, NMConnection *connection, GError **error)
if (!check_range (priv->max_age,
BR_MIN_MAX_AGE,
BR_MAX_MAX_AGE,
+ !priv->stp,
NM_SETTING_BRIDGE_MAX_AGE,
error))
return FALSE;
@@ -249,6 +256,7 @@ verify (NMSetting *setting, NMConnection *connection, GError **error)
if (!check_range (priv->ageing_time,
BR_MIN_AGEING_TIME,
BR_MAX_AGEING_TIME,
+ !priv->stp,
NM_SETTING_BRIDGE_AGEING_TIME,
error))
return FALSE;