summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2020-05-08 08:05:05 +0200
committerThomas Haller <thaller@redhat.com>2020-05-08 08:05:05 +0200
commit49298799643ef079f26d40c069ee9a98b748e70d (patch)
treee59e4b3c50991e7794d5965d4538c757a006a951
parent6e9967939b5b7dd6a49405d4d6018a528414ca4d (diff)
parent6044fce960a44aa96fbafdffdf6eb5503daba2c4 (diff)
downloadNetworkManager-49298799643ef079f26d40c069ee9a98b748e70d.tar.gz
bridge: merge branch 'th/bridge-default-value-cleanup'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/492
-rw-r--r--libnm-core/nm-core-internal.h83
-rw-r--r--libnm-core/nm-setting-bridge-port.c8
-rw-r--r--libnm-core/nm-setting-bridge.c118
-rw-r--r--shared/nm-glib-aux/nm-macros-internal.h8
-rw-r--r--shared/nm-glib-aux/nm-shared-utils.h19
-rw-r--r--src/devices/nm-device-bridge.c255
-rw-r--r--src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c143
7 files changed, 346 insertions, 288 deletions
diff --git a/libnm-core/nm-core-internal.h b/libnm-core/nm-core-internal.h
index bcf3cb406b..57f46f94be 100644
--- a/libnm-core/nm-core-internal.h
+++ b/libnm-core/nm-core-internal.h
@@ -78,27 +78,82 @@
#include "nm-libnm-core-intern/nm-libnm-core-utils.h"
/* IEEE 802.1D-1998 timer values */
-#define NM_BR_MIN_HELLO_TIME 1
-#define NM_BR_MAX_HELLO_TIME 10
+#define NM_BRIDGE_HELLO_TIME_MIN 1u
+#define NM_BRIDGE_HELLO_TIME_DEF 2u
+#define NM_BRIDGE_HELLO_TIME_MAX 10u
-#define NM_BR_MIN_FORWARD_DELAY 2
-#define NM_BR_MAX_FORWARD_DELAY 30
+#define NM_BRIDGE_FORWARD_DELAY_MIN 2u
+#define NM_BRIDGE_FORWARD_DELAY_DEF 15u
+#define NM_BRIDGE_FORWARD_DELAY_MAX 30u
-#define NM_BR_MIN_MAX_AGE 6
-#define NM_BR_MAX_MAX_AGE 40
+#define NM_BRIDGE_MAX_AGE_MIN 6u
+#define NM_BRIDGE_MAX_AGE_DEF 20u
+#define NM_BRIDGE_MAX_AGE_MAX 40u
/* IEEE 802.1D-1998 Table 7.4 */
-#define NM_BR_MIN_AGEING_TIME 0
-#define NM_BR_MAX_AGEING_TIME 1000000
+#define NM_BRIDGE_AGEING_TIME_MIN 0u
+#define NM_BRIDGE_AGEING_TIME_DEF 300u
+#define NM_BRIDGE_AGEING_TIME_MAX 1000000u
-#define NM_BR_PORT_MAX_PRIORITY 63
-#define NM_BR_PORT_DEF_PRIORITY 32
+#define NM_BRIDGE_PORT_PRIORITY_MIN 0u
+#define NM_BRIDGE_PORT_PRIORITY_DEF 32u
+#define NM_BRIDGE_PORT_PRIORITY_MAX 63u
-#define NM_BR_PORT_MAX_PATH_COST 65535
-#define NM_BR_PORT_DEF_PATH_COST 100
+#define NM_BRIDGE_PORT_PATH_COST_MIN 0u
+#define NM_BRIDGE_PORT_PATH_COST_DEF 100u
+#define NM_BRIDGE_PORT_PATH_COST_MAX 65535u
-#define NM_BR_MIN_MULTICAST_HASH_MAX 1
-#define NM_BR_MAX_MULTICAST_HASH_MAX G_MAXUINT32
+#define NM_BRIDGE_MULTICAST_HASH_MAX_MIN 1u
+#define NM_BRIDGE_MULTICAST_HASH_MAX_DEF 4096u
+#define NM_BRIDGE_MULTICAST_HASH_MAX_MAX ((guint) G_MAXUINT32)
+
+#define NM_BRIDGE_STP_DEF TRUE
+
+#define NM_BRIDGE_PRIORITY_MIN 0u
+#define NM_BRIDGE_PRIORITY_DEF 0x8000u
+#define NM_BRIDGE_PRIORITY_MAX ((guint) G_MAXUINT16)
+
+#define NM_BRIDGE_MULTICAST_LAST_MEMBER_COUNT_MIN 0u
+#define NM_BRIDGE_MULTICAST_LAST_MEMBER_COUNT_DEF 2u
+#define NM_BRIDGE_MULTICAST_LAST_MEMBER_COUNT_MAX ((guint) G_MAXUINT32)
+
+#define NM_BRIDGE_MULTICAST_LAST_MEMBER_INTERVAL_MIN ((guint64) 0)
+#define NM_BRIDGE_MULTICAST_LAST_MEMBER_INTERVAL_DEF ((guint64) 100)
+#define NM_BRIDGE_MULTICAST_LAST_MEMBER_INTERVAL_MAX G_MAXUINT64
+
+#define NM_BRIDGE_MULTICAST_MEMBERSHIP_INTERVAL_MIN ((guint64) 0)
+#define NM_BRIDGE_MULTICAST_MEMBERSHIP_INTERVAL_DEF ((guint64) 26000)
+#define NM_BRIDGE_MULTICAST_MEMBERSHIP_INTERVAL_MAX G_MAXUINT64
+
+#define NM_BRIDGE_MULTICAST_QUERIER_INTERVAL_MIN ((guint64) 0)
+#define NM_BRIDGE_MULTICAST_QUERIER_INTERVAL_DEF ((guint64) 25500)
+#define NM_BRIDGE_MULTICAST_QUERIER_INTERVAL_MAX G_MAXUINT64
+
+#define NM_BRIDGE_MULTICAST_QUERIER_DEF FALSE
+
+#define NM_BRIDGE_MULTICAST_QUERY_INTERVAL_MIN ((guint64) 0)
+#define NM_BRIDGE_MULTICAST_QUERY_INTERVAL_DEF ((guint64) 12500)
+#define NM_BRIDGE_MULTICAST_QUERY_INTERVAL_MAX G_MAXUINT64
+
+#define NM_BRIDGE_MULTICAST_QUERY_RESPONSE_INTERVAL_MIN ((guint64) 0)
+#define NM_BRIDGE_MULTICAST_QUERY_RESPONSE_INTERVAL_DEF ((guint64) 1000)
+#define NM_BRIDGE_MULTICAST_QUERY_RESPONSE_INTERVAL_MAX G_MAXUINT64
+
+#define NM_BRIDGE_MULTICAST_QUERY_USE_IFADDR_DEF FALSE
+
+#define NM_BRIDGE_MULTICAST_SNOOPING_DEF TRUE
+
+#define NM_BRIDGE_MULTICAST_STARTUP_QUERY_COUNT_MIN 0u
+#define NM_BRIDGE_MULTICAST_STARTUP_QUERY_COUNT_DEF 2u
+#define NM_BRIDGE_MULTICAST_STARTUP_QUERY_COUNT_MAX ((guint) G_MAXUINT32)
+
+#define NM_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL_MIN ((guint64) 0)
+#define NM_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL_DEF ((guint64) 3125)
+#define NM_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL_MAX G_MAXUINT64
+
+#define NM_BRIDGE_VLAN_STATS_ENABLED_DEF FALSE
+
+#define NM_BRIDGE_VLAN_DEFAULT_PVID_DEF 1u
/* NM_SETTING_COMPARE_FLAG_INFERRABLE: check whether a device-generated
* connection can be replaced by a already-defined connection. This flag only
diff --git a/libnm-core/nm-setting-bridge-port.c b/libnm-core/nm-setting-bridge-port.c
index 72f37af572..92ac28ecd2 100644
--- a/libnm-core/nm-setting-bridge-port.c
+++ b/libnm-core/nm-setting-bridge-port.c
@@ -442,8 +442,8 @@ nm_setting_bridge_port_init (NMSettingBridgePort *setting)
priv->vlans = g_ptr_array_new_with_free_func ((GDestroyNotify) nm_bridge_vlan_unref);
- priv->priority = NM_BR_PORT_DEF_PRIORITY;
- priv->path_cost = NM_BR_PORT_DEF_PATH_COST;
+ priv->priority = NM_BRIDGE_PORT_PRIORITY_DEF;
+ priv->path_cost = NM_BRIDGE_PORT_PATH_COST_DEF;
}
/**
@@ -500,7 +500,7 @@ nm_setting_bridge_port_class_init (NMSettingBridgePortClass *klass)
*/
obj_properties[PROP_PRIORITY] =
g_param_spec_uint (NM_SETTING_BRIDGE_PORT_PRIORITY, "", "",
- 0, NM_BR_PORT_MAX_PRIORITY, NM_BR_PORT_DEF_PRIORITY,
+ NM_BRIDGE_PORT_PRIORITY_MIN, NM_BRIDGE_PORT_PRIORITY_MAX, NM_BRIDGE_PORT_PRIORITY_DEF,
G_PARAM_READWRITE |
NM_SETTING_PARAM_INFERRABLE |
G_PARAM_STATIC_STRINGS);
@@ -521,7 +521,7 @@ nm_setting_bridge_port_class_init (NMSettingBridgePortClass *klass)
*/
obj_properties[PROP_PATH_COST] =
g_param_spec_uint (NM_SETTING_BRIDGE_PORT_PATH_COST, "", "",
- 0, NM_BR_PORT_MAX_PATH_COST, NM_BR_PORT_DEF_PATH_COST,
+ NM_BRIDGE_PORT_PATH_COST_MIN, NM_BRIDGE_PORT_PATH_COST_MAX, NM_BRIDGE_PORT_PATH_COST_DEF,
G_PARAM_READWRITE |
G_PARAM_STATIC_STRINGS);
diff --git a/libnm-core/nm-setting-bridge.c b/libnm-core/nm-setting-bridge.c
index 2b6d1ef5d5..18aaff2a5e 100644
--- a/libnm-core/nm-setting-bridge.c
+++ b/libnm-core/nm-setting-bridge.c
@@ -22,27 +22,6 @@
* necessary for bridging connections.
**/
-#define BRIDGE_AGEING_TIME_DEFAULT 300
-#define BRIDGE_FORWARD_DELAY_DEFAULT 15
-#define BRIDGE_HELLO_TIME_DEFAULT 2
-#define BRIDGE_MAX_AGE_DEFAULT 20
-#define BRIDGE_MULTICAST_LAST_MEMBER_COUNT_DEFAULT 2
-#define BRIDGE_MULTICAST_LAST_MEMBER_INTERVAL_DEFAULT 100
-#define BRIDGE_MULTICAST_MEMBERSHIP_INTERVAL_DEFAULT 26000
-#define BRIDGE_MULTICAST_QUERIER_INTERVAL_DEFAULT 25500
-#define BRIDGE_MULTICAST_HASH_MAX_DEFAULT 4096
-#define BRIDGE_MULTICAST_QUERIER_DEFAULT FALSE
-#define BRIDGE_MULTICAST_QUERY_INTERVAL_DEFAULT 12500
-#define BRIDGE_MULTICAST_QUERY_RESPONSE_INTERVAL_DEFAULT 1000
-#define BRIDGE_MULTICAST_QUERY_USE_IFADDR_DEFAULT FALSE
-#define BRIDGE_MULTICAST_SNOOPING_DEFAULT TRUE
-#define BRIDGE_MULTICAST_STARTUP_QUERY_COUNT_DEFAULT 2
-#define BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL_DEFAULT 3125
-#define BRIDGE_PRIORITY_DEFAULT 0x8000
-#define BRIDGE_STP_DEFAULT TRUE
-#define BRIDGE_VLAN_DEFAULT_PVID_DEFAULT 1
-#define BRIDGE_VLAN_STATS_ENABLED_DEFAULT FALSE
-
/*****************************************************************************/
NM_GOBJECT_PROPERTIES_DEFINE (NMSettingBridge,
@@ -1221,32 +1200,32 @@ verify (NMSetting *setting, NMConnection *connection, GError **error)
}
if (!check_range (priv->forward_delay,
- NM_BR_MIN_FORWARD_DELAY,
- NM_BR_MAX_FORWARD_DELAY,
+ NM_BRIDGE_FORWARD_DELAY_MIN,
+ NM_BRIDGE_FORWARD_DELAY_MAX,
!priv->stp,
NM_SETTING_BRIDGE_FORWARD_DELAY,
error))
return FALSE;
if (!check_range (priv->hello_time,
- NM_BR_MIN_HELLO_TIME,
- NM_BR_MAX_HELLO_TIME,
+ NM_BRIDGE_HELLO_TIME_MIN,
+ NM_BRIDGE_HELLO_TIME_MAX,
!priv->stp,
NM_SETTING_BRIDGE_HELLO_TIME,
error))
return FALSE;
if (!check_range (priv->max_age,
- NM_BR_MIN_MAX_AGE,
- NM_BR_MAX_MAX_AGE,
+ NM_BRIDGE_MAX_AGE_MIN,
+ NM_BRIDGE_MAX_AGE_MAX,
!priv->stp,
NM_SETTING_BRIDGE_MAX_AGE,
error))
return FALSE;
if (!check_range (priv->ageing_time,
- NM_BR_MIN_AGEING_TIME,
- NM_BR_MAX_AGEING_TIME,
+ NM_BRIDGE_AGEING_TIME_MIN,
+ NM_BRIDGE_AGEING_TIME_MAX,
!priv->stp,
NM_SETTING_BRIDGE_AGEING_TIME,
error))
@@ -1590,26 +1569,27 @@ nm_setting_bridge_init (NMSettingBridge *setting)
priv->vlans = g_ptr_array_new_with_free_func ((GDestroyNotify) nm_bridge_vlan_unref);
- priv->ageing_time = BRIDGE_AGEING_TIME_DEFAULT;
- priv->forward_delay = BRIDGE_FORWARD_DELAY_DEFAULT;
- priv->hello_time = BRIDGE_HELLO_TIME_DEFAULT;
- priv->max_age = BRIDGE_MAX_AGE_DEFAULT;
- priv->multicast_last_member_count = BRIDGE_MULTICAST_LAST_MEMBER_COUNT_DEFAULT;
- priv->multicast_last_member_interval = BRIDGE_MULTICAST_LAST_MEMBER_INTERVAL_DEFAULT;
- priv->multicast_membership_interval = BRIDGE_MULTICAST_MEMBERSHIP_INTERVAL_DEFAULT;
- priv->multicast_hash_max = BRIDGE_MULTICAST_HASH_MAX_DEFAULT;
- priv->multicast_snooping = BRIDGE_MULTICAST_SNOOPING_DEFAULT;
- priv->priority = BRIDGE_PRIORITY_DEFAULT;
- priv->stp = BRIDGE_STP_DEFAULT;
- priv->vlan_default_pvid = BRIDGE_VLAN_DEFAULT_PVID_DEFAULT;
- priv->vlan_stats_enabled = BRIDGE_VLAN_STATS_ENABLED_DEFAULT;
- priv->multicast_query_interval = BRIDGE_MULTICAST_QUERY_INTERVAL_DEFAULT;
- priv->multicast_query_response_interval = BRIDGE_MULTICAST_QUERY_RESPONSE_INTERVAL_DEFAULT;
- priv->multicast_query_use_ifaddr = BRIDGE_MULTICAST_QUERY_USE_IFADDR_DEFAULT;
- priv->multicast_querier = BRIDGE_MULTICAST_QUERIER_DEFAULT;
- priv->multicast_querier_interval = BRIDGE_MULTICAST_QUERIER_INTERVAL_DEFAULT;
- priv->multicast_startup_query_count = BRIDGE_MULTICAST_STARTUP_QUERY_COUNT_DEFAULT;
- priv->multicast_startup_query_interval = BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL_DEFAULT;
+ priv->ageing_time = NM_BRIDGE_AGEING_TIME_DEF;
+ priv->forward_delay = NM_BRIDGE_FORWARD_DELAY_DEF;
+ priv->hello_time = NM_BRIDGE_HELLO_TIME_DEF;
+ priv->max_age = NM_BRIDGE_MAX_AGE_DEF;
+ priv->multicast_last_member_count = NM_BRIDGE_MULTICAST_LAST_MEMBER_COUNT_DEF;
+ priv->multicast_last_member_interval = NM_BRIDGE_MULTICAST_LAST_MEMBER_INTERVAL_DEF;
+ priv->multicast_membership_interval = NM_BRIDGE_MULTICAST_MEMBERSHIP_INTERVAL_DEF;
+ priv->multicast_hash_max = NM_BRIDGE_MULTICAST_HASH_MAX_DEF;
+ priv->multicast_snooping = NM_BRIDGE_MULTICAST_SNOOPING_DEF;
+ priv->priority = NM_BRIDGE_PRIORITY_DEF;
+ priv->stp = NM_BRIDGE_STP_DEF;
+ priv->vlan_default_pvid = NM_BRIDGE_VLAN_DEFAULT_PVID_DEF;
+ priv->multicast_query_interval = NM_BRIDGE_MULTICAST_QUERY_INTERVAL_DEF;
+ priv->multicast_query_response_interval = NM_BRIDGE_MULTICAST_QUERY_RESPONSE_INTERVAL_DEF;
+ priv->multicast_querier_interval = NM_BRIDGE_MULTICAST_QUERIER_INTERVAL_DEF;
+ priv->multicast_startup_query_count = NM_BRIDGE_MULTICAST_STARTUP_QUERY_COUNT_DEF;
+ priv->multicast_startup_query_interval = NM_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL_DEF;
+
+ nm_assert (priv->multicast_querier == NM_BRIDGE_MULTICAST_QUERIER_DEF);
+ nm_assert (priv->multicast_query_use_ifaddr == NM_BRIDGE_MULTICAST_QUERY_USE_IFADDR_DEF);
+ nm_assert (priv->vlan_stats_enabled == NM_BRIDGE_VLAN_STATS_ENABLED_DEF);
}
/**
@@ -1705,7 +1685,7 @@ nm_setting_bridge_class_init (NMSettingBridgeClass *klass)
*/
obj_properties[PROP_STP] =
g_param_spec_boolean (NM_SETTING_BRIDGE_STP, "", "",
- BRIDGE_STP_DEFAULT,
+ NM_BRIDGE_STP_DEF,
G_PARAM_READWRITE |
NM_SETTING_PARAM_INFERRABLE |
G_PARAM_STATIC_STRINGS);
@@ -1727,7 +1707,7 @@ nm_setting_bridge_class_init (NMSettingBridgeClass *klass)
*/
obj_properties[PROP_PRIORITY] =
g_param_spec_uint (NM_SETTING_BRIDGE_PRIORITY, "", "",
- 0, G_MAXUINT16, BRIDGE_PRIORITY_DEFAULT,
+ NM_BRIDGE_PRIORITY_MIN, NM_BRIDGE_PRIORITY_MAX, NM_BRIDGE_PRIORITY_DEF,
G_PARAM_READWRITE |
NM_SETTING_PARAM_INFERRABLE |
G_PARAM_STATIC_STRINGS);
@@ -1747,7 +1727,7 @@ nm_setting_bridge_class_init (NMSettingBridgeClass *klass)
*/
obj_properties[PROP_FORWARD_DELAY] =
g_param_spec_uint (NM_SETTING_BRIDGE_FORWARD_DELAY, "", "",
- 0, NM_BR_MAX_FORWARD_DELAY, BRIDGE_FORWARD_DELAY_DEFAULT,
+ 0, NM_BRIDGE_FORWARD_DELAY_MAX, NM_BRIDGE_FORWARD_DELAY_DEF,
G_PARAM_READWRITE |
NM_SETTING_PARAM_INFERRABLE |
G_PARAM_STATIC_STRINGS);
@@ -1767,7 +1747,7 @@ nm_setting_bridge_class_init (NMSettingBridgeClass *klass)
*/
obj_properties[PROP_HELLO_TIME] =
g_param_spec_uint (NM_SETTING_BRIDGE_HELLO_TIME, "", "",
- 0, NM_BR_MAX_HELLO_TIME, BRIDGE_HELLO_TIME_DEFAULT,
+ 0, NM_BRIDGE_HELLO_TIME_MAX, NM_BRIDGE_HELLO_TIME_DEF,
G_PARAM_READWRITE |
NM_SETTING_PARAM_INFERRABLE |
G_PARAM_STATIC_STRINGS);
@@ -1787,7 +1767,7 @@ nm_setting_bridge_class_init (NMSettingBridgeClass *klass)
*/
obj_properties[PROP_MAX_AGE] =
g_param_spec_uint (NM_SETTING_BRIDGE_MAX_AGE, "", "",
- 0, NM_BR_MAX_MAX_AGE, BRIDGE_MAX_AGE_DEFAULT,
+ 0, NM_BRIDGE_MAX_AGE_MAX, NM_BRIDGE_MAX_AGE_DEF,
G_PARAM_READWRITE |
NM_SETTING_PARAM_INFERRABLE |
G_PARAM_STATIC_STRINGS);
@@ -1807,7 +1787,7 @@ nm_setting_bridge_class_init (NMSettingBridgeClass *klass)
*/
obj_properties[PROP_AGEING_TIME] =
g_param_spec_uint (NM_SETTING_BRIDGE_AGEING_TIME, "", "",
- NM_BR_MIN_AGEING_TIME, NM_BR_MAX_AGEING_TIME, BRIDGE_AGEING_TIME_DEFAULT,
+ NM_BRIDGE_AGEING_TIME_MIN, NM_BRIDGE_AGEING_TIME_MAX, NM_BRIDGE_AGEING_TIME_DEF,
G_PARAM_READWRITE |
NM_SETTING_PARAM_INFERRABLE |
G_PARAM_STATIC_STRINGS);
@@ -1851,7 +1831,7 @@ nm_setting_bridge_class_init (NMSettingBridgeClass *klass)
*/
obj_properties[PROP_MULTICAST_SNOOPING] =
g_param_spec_boolean (NM_SETTING_BRIDGE_MULTICAST_SNOOPING, "", "",
- BRIDGE_MULTICAST_SNOOPING_DEFAULT,
+ NM_BRIDGE_MULTICAST_SNOOPING_DEF,
G_PARAM_READWRITE |
NM_SETTING_PARAM_INFERRABLE |
G_PARAM_STATIC_STRINGS);
@@ -1896,7 +1876,7 @@ nm_setting_bridge_class_init (NMSettingBridgeClass *klass)
*/
obj_properties[PROP_VLAN_DEFAULT_PVID] =
g_param_spec_uint (NM_SETTING_BRIDGE_VLAN_DEFAULT_PVID, "", "",
- 0, NM_BRIDGE_VLAN_VID_MAX, BRIDGE_VLAN_DEFAULT_PVID_DEFAULT,
+ 0, NM_BRIDGE_VLAN_VID_MAX, NM_BRIDGE_VLAN_DEFAULT_PVID_DEF,
G_PARAM_READWRITE |
NM_SETTING_PARAM_INFERRABLE |
G_PARAM_STATIC_STRINGS);
@@ -2011,7 +1991,7 @@ nm_setting_bridge_class_init (NMSettingBridgeClass *klass)
*/
obj_properties[PROP_VLAN_STATS_ENABLED] =
g_param_spec_boolean (NM_SETTING_BRIDGE_VLAN_STATS_ENABLED, "", "",
- BRIDGE_VLAN_STATS_ENABLED_DEFAULT,
+ NM_BRIDGE_VLAN_STATS_ENABLED_DEF,
G_PARAM_READWRITE |
NM_SETTING_PARAM_INFERRABLE |
G_PARAM_STATIC_STRINGS);
@@ -2060,7 +2040,7 @@ nm_setting_bridge_class_init (NMSettingBridgeClass *klass)
*/
obj_properties[PROP_MULTICAST_QUERY_USE_IFADDR] =
g_param_spec_boolean (NM_SETTING_BRIDGE_MULTICAST_QUERY_USE_IFADDR, "", "",
- BRIDGE_MULTICAST_QUERY_USE_IFADDR_DEFAULT,
+ NM_BRIDGE_MULTICAST_QUERY_USE_IFADDR_DEF,
G_PARAM_READWRITE |
NM_SETTING_PARAM_INFERRABLE |
G_PARAM_STATIC_STRINGS);
@@ -2082,7 +2062,7 @@ nm_setting_bridge_class_init (NMSettingBridgeClass *klass)
*/
obj_properties[PROP_MULTICAST_QUERIER] =
g_param_spec_boolean (NM_SETTING_BRIDGE_MULTICAST_QUERIER, "", "",
- BRIDGE_MULTICAST_QUERIER_DEFAULT,
+ NM_BRIDGE_MULTICAST_QUERIER_DEF,
G_PARAM_READWRITE |
NM_SETTING_PARAM_INFERRABLE |
G_PARAM_STATIC_STRINGS);
@@ -2103,7 +2083,7 @@ nm_setting_bridge_class_init (NMSettingBridgeClass *klass)
*/
obj_properties[PROP_MULTICAST_HASH_MAX] =
g_param_spec_uint (NM_SETTING_BRIDGE_MULTICAST_HASH_MAX, "", "",
- NM_BR_MIN_MULTICAST_HASH_MAX, NM_BR_MAX_MULTICAST_HASH_MAX, BRIDGE_MULTICAST_HASH_MAX_DEFAULT,
+ NM_BRIDGE_MULTICAST_HASH_MAX_MIN, NM_BRIDGE_MULTICAST_HASH_MAX_MAX, NM_BRIDGE_MULTICAST_HASH_MAX_DEF,
G_PARAM_READWRITE |
NM_SETTING_PARAM_INFERRABLE |
G_PARAM_STATIC_STRINGS);
@@ -2126,7 +2106,7 @@ nm_setting_bridge_class_init (NMSettingBridgeClass *klass)
*/
obj_properties[PROP_MULTICAST_LAST_MEMBER_COUNT] =
g_param_spec_uint (NM_SETTING_BRIDGE_MULTICAST_LAST_MEMBER_COUNT, "", "",
- 0, G_MAXUINT32, BRIDGE_MULTICAST_LAST_MEMBER_COUNT_DEFAULT,
+ NM_BRIDGE_MULTICAST_LAST_MEMBER_COUNT_MIN, NM_BRIDGE_MULTICAST_LAST_MEMBER_COUNT_MAX, NM_BRIDGE_MULTICAST_LAST_MEMBER_COUNT_DEF,
G_PARAM_READWRITE |
NM_SETTING_PARAM_INFERRABLE |
G_PARAM_STATIC_STRINGS);
@@ -2148,7 +2128,7 @@ nm_setting_bridge_class_init (NMSettingBridgeClass *klass)
*/
obj_properties[PROP_MULTICAST_LAST_MEMBER_INTERVAL] =
g_param_spec_uint64 (NM_SETTING_BRIDGE_MULTICAST_LAST_MEMBER_INTERVAL, "", "",
- 0, G_MAXUINT64, BRIDGE_MULTICAST_LAST_MEMBER_INTERVAL_DEFAULT,
+ NM_BRIDGE_MULTICAST_LAST_MEMBER_INTERVAL_MIN, NM_BRIDGE_MULTICAST_LAST_MEMBER_INTERVAL_MAX, NM_BRIDGE_MULTICAST_LAST_MEMBER_INTERVAL_DEF,
G_PARAM_READWRITE |
NM_SETTING_PARAM_INFERRABLE |
G_PARAM_STATIC_STRINGS);
@@ -2171,7 +2151,7 @@ nm_setting_bridge_class_init (NMSettingBridgeClass *klass)
*/
obj_properties[PROP_MULTICAST_MEMBERSHIP_INTERVAL] =
g_param_spec_uint64 (NM_SETTING_BRIDGE_MULTICAST_MEMBERSHIP_INTERVAL, "", "",
- 0, G_MAXUINT64, BRIDGE_MULTICAST_MEMBERSHIP_INTERVAL_DEFAULT,
+ NM_BRIDGE_MULTICAST_MEMBERSHIP_INTERVAL_MIN, NM_BRIDGE_MULTICAST_MEMBERSHIP_INTERVAL_MAX, NM_BRIDGE_MULTICAST_MEMBERSHIP_INTERVAL_DEF,
G_PARAM_READWRITE |
NM_SETTING_PARAM_INFERRABLE |
G_PARAM_STATIC_STRINGS);
@@ -2193,7 +2173,7 @@ nm_setting_bridge_class_init (NMSettingBridgeClass *klass)
*/
obj_properties[PROP_MULTICAST_QUERIER_INTERVAL] =
g_param_spec_uint64 (NM_SETTING_BRIDGE_MULTICAST_QUERIER_INTERVAL, "", "",
- 0, G_MAXUINT64, BRIDGE_MULTICAST_QUERIER_INTERVAL_DEFAULT,
+ NM_BRIDGE_MULTICAST_QUERIER_INTERVAL_MIN, NM_BRIDGE_MULTICAST_QUERIER_INTERVAL_MAX, NM_BRIDGE_MULTICAST_QUERIER_INTERVAL_DEF,
G_PARAM_READWRITE |
NM_SETTING_PARAM_INFERRABLE |
G_PARAM_STATIC_STRINGS);
@@ -2215,7 +2195,7 @@ nm_setting_bridge_class_init (NMSettingBridgeClass *klass)
*/
obj_properties[PROP_MULTICAST_QUERY_INTERVAL] =
g_param_spec_uint64 (NM_SETTING_BRIDGE_MULTICAST_QUERY_INTERVAL, "", "",
- 0, G_MAXUINT64, BRIDGE_MULTICAST_QUERY_INTERVAL_DEFAULT,
+ NM_BRIDGE_MULTICAST_QUERY_INTERVAL_MIN, NM_BRIDGE_MULTICAST_QUERY_INTERVAL_MAX, NM_BRIDGE_MULTICAST_QUERY_INTERVAL_DEF,
G_PARAM_READWRITE |
NM_SETTING_PARAM_INFERRABLE |
G_PARAM_STATIC_STRINGS);
@@ -2237,7 +2217,7 @@ nm_setting_bridge_class_init (NMSettingBridgeClass *klass)
*/
obj_properties[PROP_MULTICAST_QUERY_RESPONSE_INTERVAL] =
g_param_spec_uint64 (NM_SETTING_BRIDGE_MULTICAST_QUERY_RESPONSE_INTERVAL, "", "",
- 0, G_MAXUINT64, BRIDGE_MULTICAST_QUERY_RESPONSE_INTERVAL_DEFAULT,
+ NM_BRIDGE_MULTICAST_QUERY_RESPONSE_INTERVAL_MIN, NM_BRIDGE_MULTICAST_QUERY_RESPONSE_INTERVAL_MAX, NM_BRIDGE_MULTICAST_QUERY_RESPONSE_INTERVAL_DEF,
G_PARAM_READWRITE |
NM_SETTING_PARAM_INFERRABLE |
G_PARAM_STATIC_STRINGS);
@@ -2258,7 +2238,7 @@ nm_setting_bridge_class_init (NMSettingBridgeClass *klass)
*/
obj_properties[PROP_MULTICAST_STARTUP_QUERY_COUNT] =
g_param_spec_uint (NM_SETTING_BRIDGE_MULTICAST_STARTUP_QUERY_COUNT, "", "",
- 0, G_MAXUINT32, BRIDGE_MULTICAST_STARTUP_QUERY_COUNT_DEFAULT,
+ NM_BRIDGE_MULTICAST_STARTUP_QUERY_COUNT_MIN, NM_BRIDGE_MULTICAST_STARTUP_QUERY_COUNT_MAX, NM_BRIDGE_MULTICAST_STARTUP_QUERY_COUNT_DEF,
G_PARAM_READWRITE |
NM_SETTING_PARAM_INFERRABLE |
G_PARAM_STATIC_STRINGS);
@@ -2280,7 +2260,7 @@ nm_setting_bridge_class_init (NMSettingBridgeClass *klass)
*/
obj_properties[PROP_MULTICAST_STARTUP_QUERY_INTERVAL] =
g_param_spec_uint64 (NM_SETTING_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL, "", "",
- 0, G_MAXUINT64, BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL_DEFAULT,
+ NM_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL_MIN, NM_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL_MAX, NM_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL_DEF,
G_PARAM_READWRITE |
NM_SETTING_PARAM_INFERRABLE |
G_PARAM_STATIC_STRINGS);
diff --git a/shared/nm-glib-aux/nm-macros-internal.h b/shared/nm-glib-aux/nm-macros-internal.h
index 8c0aa21820..637d62bb5d 100644
--- a/shared/nm-glib-aux/nm-macros-internal.h
+++ b/shared/nm-glib-aux/nm-macros-internal.h
@@ -630,6 +630,14 @@ NM_G_ERROR_MSG (GError *error)
NM_CONSTCAST_FULL (type, (obj), _obj, GObject, ##__VA_ARGS__); \
})
+#define NM_ENSURE_NOT_NULL(ptr) \
+ ({ \
+ typeof (ptr) _ptr = (ptr); \
+ \
+ nm_assert (_ptr != NULL); \
+ _ptr; \
+ })
+
#if _NM_CC_SUPPORT_GENERIC
/* returns @value, if the type of @value matches @type.
* This requires support for C11 _Generic(). If no support is
diff --git a/shared/nm-glib-aux/nm-shared-utils.h b/shared/nm-glib-aux/nm-shared-utils.h
index fafaefc45d..fb9e3ac903 100644
--- a/shared/nm-glib-aux/nm-shared-utils.h
+++ b/shared/nm-glib-aux/nm-shared-utils.h
@@ -1158,6 +1158,25 @@ GParamSpec *nm_g_object_class_find_property_from_gtype (GType gtype,
/*****************************************************************************/
+#define _NM_G_PARAM_SPEC_CAST(param_spec, _value_type, _c_type) \
+ ({ \
+ const GParamSpec *const _param_spec = (param_spec); \
+ \
+ nm_assert ( !_param_spec \
+ || _param_spec->value_type == (_value_type)); \
+ ((const _c_type *) _param_spec); \
+ })
+
+#define NM_G_PARAM_SPEC_CAST_BOOLEAN(param_spec) _NM_G_PARAM_SPEC_CAST (param_spec, G_TYPE_BOOLEAN, GParamSpecBoolean)
+#define NM_G_PARAM_SPEC_CAST_UINT(param_spec) _NM_G_PARAM_SPEC_CAST (param_spec, G_TYPE_UINT, GParamSpecUInt)
+#define NM_G_PARAM_SPEC_CAST_UINT64(param_spec) _NM_G_PARAM_SPEC_CAST (param_spec, G_TYPE_UINT64, GParamSpecUInt64)
+
+#define NM_G_PARAM_SPEC_GET_DEFAULT_BOOLEAN(param_spec) (NM_G_PARAM_SPEC_CAST_BOOLEAN (NM_ENSURE_NOT_NULL (param_spec))->default_value)
+#define NM_G_PARAM_SPEC_GET_DEFAULT_UINT(param_spec) (NM_G_PARAM_SPEC_CAST_UINT (NM_ENSURE_NOT_NULL (param_spec))->default_value)
+#define NM_G_PARAM_SPEC_GET_DEFAULT_UINT64(param_spec) (NM_G_PARAM_SPEC_CAST_UINT64 (NM_ENSURE_NOT_NULL (param_spec))->default_value)
+
+/*****************************************************************************/
+
GType nm_g_type_find_implementing_class_for_property (GType gtype,
const char *pname);
diff --git a/src/devices/nm-device-bridge.c b/src/devices/nm-device-bridge.c
index 4ca3b5b043..544e66140c 100644
--- a/src/devices/nm-device-bridge.c
+++ b/src/devices/nm-device-bridge.c
@@ -245,116 +245,148 @@ typedef struct {
bool only_with_stp;
} Option;
+#define OPTION(_name, _sysname, ...) \
+ { \
+ .name = ""_name"", \
+ .sysname = ""_sysname"", \
+ __VA_ARGS__ \
+ }
+
+#define OPTION_TYPE_INT(min, max, def) \
+ .nm_min = (min), .nm_max = (max), .nm_default = (def)
+
+#define OPTION_TYPE_BOOL(def) \
+ OPTION_TYPE_INT (FALSE, TRUE, def)
+
+#define OPTION_TYPE_TOFROM(to, fro) \
+ .to_sysfs = (to), .from_sysfs = (fro)
+
static const Option master_options[] = {
- { NM_SETTING_BRIDGE_STP, "stp_state", /* this must stay as the first item */
- NULL, NULL,
- 0, 1, 1,
- FALSE, FALSE, FALSE },
- { NM_SETTING_BRIDGE_PRIORITY, "priority",
- NULL, NULL,
- 0, G_MAXUINT16, 0x8000,
- TRUE, FALSE, TRUE },
- { NM_SETTING_BRIDGE_FORWARD_DELAY, "forward_delay",
- NULL, NULL,
- 0, NM_BR_MAX_FORWARD_DELAY, 15,
- TRUE, TRUE, TRUE},
- { NM_SETTING_BRIDGE_HELLO_TIME, "hello_time",
- NULL, NULL,
- 0, NM_BR_MAX_HELLO_TIME, 2,
- TRUE, TRUE, TRUE },
- { NM_SETTING_BRIDGE_MAX_AGE, "max_age",
- NULL, NULL,
- 0, NM_BR_MAX_MAX_AGE, 20,
- TRUE, TRUE, TRUE },
- { NM_SETTING_BRIDGE_AGEING_TIME, "ageing_time",
- NULL, NULL,
- NM_BR_MIN_AGEING_TIME, NM_BR_MAX_AGEING_TIME, 300,
- TRUE, TRUE, FALSE },
- { NM_SETTING_BRIDGE_GROUP_FORWARD_MASK, "group_fwd_mask",
- NULL, NULL,
- 0, 0xFFFF, 0,
- TRUE, FALSE, FALSE },
- { NM_SETTING_BRIDGE_MULTICAST_HASH_MAX, "hash_max",
- NULL, NULL,
- NM_BR_MIN_MULTICAST_HASH_MAX, NM_BR_MAX_MULTICAST_HASH_MAX, 4096,
- FALSE, FALSE, FALSE },
- { NM_SETTING_BRIDGE_MULTICAST_LAST_MEMBER_COUNT, "multicast_last_member_count",
- NULL, NULL,
- 0, G_MAXUINT32, 2,
- FALSE, FALSE, FALSE },
- { NM_SETTING_BRIDGE_MULTICAST_LAST_MEMBER_INTERVAL, "multicast_last_member_interval",
- NULL, NULL,
- 0, G_MAXUINT64, 100,
- FALSE, FALSE, FALSE },
- { NM_SETTING_BRIDGE_MULTICAST_MEMBERSHIP_INTERVAL, "multicast_membership_interval",
- NULL, NULL,
- 0, G_MAXUINT64, 26000,
- FALSE, FALSE, FALSE },
- { NM_SETTING_BRIDGE_MULTICAST_QUERIER, "multicast_querier",
- NULL, NULL,
- 0, 1, 0,
- FALSE, FALSE, FALSE },
- { NM_SETTING_BRIDGE_MULTICAST_QUERIER_INTERVAL, "multicast_querier_interval",
- NULL, NULL,
- 0, G_MAXUINT64, 25500,
- FALSE, FALSE, FALSE },
- { NM_SETTING_BRIDGE_MULTICAST_QUERY_INTERVAL, "multicast_query_interval",
- NULL, NULL,
- 0, G_MAXUINT64, 12500,
- FALSE, FALSE, FALSE },
- { NM_SETTING_BRIDGE_MULTICAST_QUERY_RESPONSE_INTERVAL, "multicast_query_response_interval",
- NULL, NULL,
- 0, G_MAXUINT64, 1000,
- FALSE, FALSE, FALSE },
- { NM_SETTING_BRIDGE_MULTICAST_QUERY_USE_IFADDR, "multicast_query_use_ifaddr",
- NULL, NULL,
- 0, 1, 0,
- FALSE, FALSE, FALSE },
- { NM_SETTING_BRIDGE_MULTICAST_SNOOPING, "multicast_snooping",
- NULL, NULL,
- 0, 1, 1,
- FALSE, FALSE, FALSE },
- { NM_SETTING_BRIDGE_MULTICAST_ROUTER, "multicast_router",
- to_sysfs_multicast_router, from_sysfs_multicast_router,
- 0, 0, 0,
- FALSE, FALSE, FALSE },
- { NM_SETTING_BRIDGE_MULTICAST_STARTUP_QUERY_COUNT, "multicast_startup_query_count",
- NULL, NULL,
- 0, G_MAXUINT32, 2,
- FALSE, FALSE, FALSE },
- { NM_SETTING_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL, "multicast_startup_query_interval",
- NULL, NULL,
- 0, G_MAXUINT64, 3125,
- FALSE, FALSE, FALSE },
- { NM_SETTING_BRIDGE_GROUP_ADDRESS, "group_addr",
- to_sysfs_group_address, from_sysfs_group_address,
- 0, 0, 0,
- FALSE, FALSE, FALSE },
- { NM_SETTING_BRIDGE_VLAN_PROTOCOL, "vlan_protocol",
- to_sysfs_vlan_protocol, from_sysfs_vlan_protocol,
- 0, 0, 0,
- FALSE, FALSE, FALSE },
- { NM_SETTING_BRIDGE_VLAN_STATS_ENABLED, "vlan_stats_enabled",
- NULL, NULL,
- 0, 1, 0,
- FALSE, FALSE, FALSE },
- { NULL, NULL }
+ OPTION (NM_SETTING_BRIDGE_STP, /* this must stay as the first item */
+ "stp_state",
+ OPTION_TYPE_BOOL (NM_BRIDGE_STP_DEF),
+ ),
+ OPTION (NM_SETTING_BRIDGE_PRIORITY,
+ "priority",
+ OPTION_TYPE_INT (NM_BRIDGE_PRIORITY_MIN, NM_BRIDGE_PRIORITY_MAX, NM_BRIDGE_PRIORITY_DEF),
+ .default_if_zero = TRUE,
+ .only_with_stp = TRUE,
+ ),
+ OPTION (NM_SETTING_BRIDGE_FORWARD_DELAY,
+ "forward_delay",
+ OPTION_TYPE_INT (NM_BRIDGE_FORWARD_DELAY_MIN, NM_BRIDGE_FORWARD_DELAY_MAX, NM_BRIDGE_FORWARD_DELAY_DEF),
+ .default_if_zero = TRUE,
+ .user_hz_compensate = TRUE,
+ .only_with_stp = TRUE,
+ ),
+ OPTION (NM_SETTING_BRIDGE_HELLO_TIME,
+ "hello_time",
+ OPTION_TYPE_INT (NM_BRIDGE_HELLO_TIME_MIN, NM_BRIDGE_HELLO_TIME_MAX, NM_BRIDGE_HELLO_TIME_DEF),
+ .default_if_zero = TRUE,
+ .user_hz_compensate = TRUE,
+ .only_with_stp = TRUE,
+ ),
+ OPTION (NM_SETTING_BRIDGE_MAX_AGE,
+ "max_age",
+ OPTION_TYPE_INT (NM_BRIDGE_MAX_AGE_MIN, NM_BRIDGE_MAX_AGE_MAX, NM_BRIDGE_MAX_AGE_DEF),
+ .default_if_zero = TRUE,
+ .user_hz_compensate = TRUE,
+ .only_with_stp = TRUE,
+ ),
+ OPTION (NM_SETTING_BRIDGE_AGEING_TIME,
+ "ageing_time",
+ OPTION_TYPE_INT (NM_BRIDGE_AGEING_TIME_MIN, NM_BRIDGE_AGEING_TIME_MAX, NM_BRIDGE_AGEING_TIME_DEF),
+ .default_if_zero = TRUE,
+ .user_hz_compensate = TRUE,
+ ),
+ OPTION (NM_SETTING_BRIDGE_GROUP_FORWARD_MASK,
+ "group_fwd_mask",
+ OPTION_TYPE_INT (0, 0xFFFF, 0),
+ .default_if_zero = TRUE,
+ ),
+ OPTION (NM_SETTING_BRIDGE_MULTICAST_HASH_MAX,
+ "hash_max",
+ OPTION_TYPE_INT (NM_BRIDGE_MULTICAST_HASH_MAX_MIN, NM_BRIDGE_MULTICAST_HASH_MAX_MAX, NM_BRIDGE_MULTICAST_HASH_MAX_DEF),
+ ),
+ OPTION (NM_SETTING_BRIDGE_MULTICAST_LAST_MEMBER_COUNT,
+ "multicast_last_member_count",
+ OPTION_TYPE_INT (NM_BRIDGE_MULTICAST_LAST_MEMBER_COUNT_MIN, NM_BRIDGE_MULTICAST_LAST_MEMBER_COUNT_MAX, NM_BRIDGE_MULTICAST_LAST_MEMBER_COUNT_DEF),
+ ),
+ OPTION (NM_SETTING_BRIDGE_MULTICAST_LAST_MEMBER_INTERVAL,
+ "multicast_last_member_interval",
+ OPTION_TYPE_INT (NM_BRIDGE_MULTICAST_LAST_MEMBER_INTERVAL_MIN, NM_BRIDGE_MULTICAST_LAST_MEMBER_INTERVAL_MAX, NM_BRIDGE_MULTICAST_LAST_MEMBER_INTERVAL_DEF),
+ ),
+ OPTION (NM_SETTING_BRIDGE_MULTICAST_MEMBERSHIP_INTERVAL,
+ "multicast_membership_interval",
+ OPTION_TYPE_INT (NM_BRIDGE_MULTICAST_MEMBERSHIP_INTERVAL_MIN, NM_BRIDGE_MULTICAST_MEMBERSHIP_INTERVAL_MAX, NM_BRIDGE_MULTICAST_MEMBERSHIP_INTERVAL_DEF),
+ ),
+ OPTION (NM_SETTING_BRIDGE_MULTICAST_QUERIER,
+ "multicast_querier",
+ OPTION_TYPE_BOOL (NM_BRIDGE_MULTICAST_QUERIER_DEF),
+ ),
+ OPTION (NM_SETTING_BRIDGE_MULTICAST_QUERIER_INTERVAL,
+ "multicast_querier_interval",
+ OPTION_TYPE_INT (NM_BRIDGE_MULTICAST_QUERIER_INTERVAL_MIN, NM_BRIDGE_MULTICAST_QUERIER_INTERVAL_MAX, NM_BRIDGE_MULTICAST_QUERIER_INTERVAL_DEF),
+ ),
+ OPTION (NM_SETTING_BRIDGE_MULTICAST_QUERY_INTERVAL,
+ "multicast_query_interval",
+ OPTION_TYPE_INT (NM_BRIDGE_MULTICAST_QUERY_INTERVAL_MIN, NM_BRIDGE_MULTICAST_QUERY_INTERVAL_MAX, NM_BRIDGE_MULTICAST_QUERY_INTERVAL_DEF),
+ ),
+ OPTION (NM_SETTING_BRIDGE_MULTICAST_QUERY_RESPONSE_INTERVAL,
+ "multicast_query_response_interval",
+ OPTION_TYPE_INT (NM_BRIDGE_MULTICAST_QUERY_RESPONSE_INTERVAL_MIN, NM_BRIDGE_MULTICAST_QUERY_RESPONSE_INTERVAL_MAX, NM_BRIDGE_MULTICAST_QUERY_RESPONSE_INTERVAL_DEF),
+ ),
+ OPTION (NM_SETTING_BRIDGE_MULTICAST_QUERY_USE_IFADDR,
+ "multicast_query_use_ifaddr",
+ OPTION_TYPE_BOOL (NM_BRIDGE_MULTICAST_QUERY_USE_IFADDR_DEF),
+ ),
+ OPTION (NM_SETTING_BRIDGE_MULTICAST_SNOOPING,
+ "multicast_snooping",
+ OPTION_TYPE_BOOL (NM_BRIDGE_MULTICAST_SNOOPING_DEF),
+ ),
+ OPTION (NM_SETTING_BRIDGE_MULTICAST_ROUTER,
+ "multicast_router",
+ OPTION_TYPE_TOFROM (to_sysfs_multicast_router, from_sysfs_multicast_router),
+ ),
+ OPTION (NM_SETTING_BRIDGE_MULTICAST_STARTUP_QUERY_COUNT,
+ "multicast_startup_query_count",
+ OPTION_TYPE_INT (NM_BRIDGE_MULTICAST_STARTUP_QUERY_COUNT_MIN, NM_BRIDGE_MULTICAST_STARTUP_QUERY_COUNT_MAX, NM_BRIDGE_MULTICAST_STARTUP_QUERY_COUNT_DEF),
+ ),
+ OPTION (NM_SETTING_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL,
+ "multicast_startup_query_interval",
+ OPTION_TYPE_INT (NM_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL_MIN, NM_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL_MAX, NM_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL_DEF),
+ ),
+ OPTION (NM_SETTING_BRIDGE_GROUP_ADDRESS,
+ "group_addr",
+ OPTION_TYPE_TOFROM (to_sysfs_group_address, from_sysfs_group_address),
+ ),
+ OPTION (NM_SETTING_BRIDGE_VLAN_PROTOCOL,
+ "vlan_protocol",
+ OPTION_TYPE_TOFROM (to_sysfs_vlan_protocol, from_sysfs_vlan_protocol),
+ ),
+ OPTION (NM_SETTING_BRIDGE_VLAN_STATS_ENABLED,
+ "vlan_stats_enabled",
+ OPTION_TYPE_BOOL (NM_BRIDGE_VLAN_STATS_ENABLED_DEF)
+ ),
+ { 0, }
};
static const Option slave_options[] = {
- { NM_SETTING_BRIDGE_PORT_PRIORITY, "priority",
- NULL, NULL,
- 0, NM_BR_PORT_MAX_PRIORITY, NM_BR_PORT_DEF_PRIORITY,
- TRUE, FALSE },
- { NM_SETTING_BRIDGE_PORT_PATH_COST, "path_cost",
- NULL, NULL,
- 0, NM_BR_PORT_MAX_PATH_COST, 100,
- TRUE, FALSE },
- { NM_SETTING_BRIDGE_PORT_HAIRPIN_MODE, "hairpin_mode",
- NULL, NULL,
- 0, 1, 0,
- FALSE, FALSE },
- { NULL, NULL }
+ OPTION (NM_SETTING_BRIDGE_PORT_PRIORITY,
+ "priority",
+ OPTION_TYPE_INT (NM_BRIDGE_PORT_PRIORITY_MIN, NM_BRIDGE_PORT_PRIORITY_MAX, NM_BRIDGE_PORT_PRIORITY_DEF),
+ .default_if_zero = TRUE,
+ ),
+ OPTION (NM_SETTING_BRIDGE_PORT_PATH_COST,
+ "path_cost",
+ OPTION_TYPE_INT (NM_BRIDGE_PORT_PATH_COST_MIN, NM_BRIDGE_PORT_PATH_COST_MAX, NM_BRIDGE_PORT_PATH_COST_DEF),
+ .default_if_zero = TRUE,
+ ),
+ OPTION (NM_SETTING_BRIDGE_PORT_HAIRPIN_MODE,
+ "hairpin_mode",
+ OPTION_TYPE_BOOL (FALSE),
+ ),
+ { 0 }
};
static void
@@ -398,15 +430,12 @@ commit_option (NMDevice *device, NMSetting *setting, const Option *option, gbool
/* zero means "unspecified" for some NM properties but isn't in the
* allowed kernel range, so reset the property to the default value.
*/
- if (option->default_if_zero && uval == 0) {
- g_value_unset (&val);
- g_value_init (&val, G_PARAM_SPEC_VALUE_TYPE (pspec));
- g_param_value_set_default (pspec, &val);
-
+ if ( option->default_if_zero
+ && uval == 0) {
if (pspec->value_type == G_TYPE_UINT64)
- uval = g_value_get_uint64 (&val);
+ uval = NM_G_PARAM_SPEC_GET_DEFAULT_UINT64 (pspec);
else
- uval = (guint) g_value_get_uint (&val);
+ uval = NM_G_PARAM_SPEC_GET_DEFAULT_UINT (pspec);
}
/* Linux kernel bridge interfaces use 'centiseconds' for time-based values.
diff --git a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c
index f3f5647dbc..b9f8161b9c 100644
--- a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c
+++ b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c
@@ -1362,55 +1362,22 @@ write_team_setting (NMConnection *connection, shvarFile *ifcfg, gboolean *wired,
return TRUE;
}
-static guint32
-get_setting_default_uint (NMSetting *setting, const char *prop)
+static gboolean
+get_setting_default_boolean (gpointer setting, const char *prop)
{
- GParamSpec *pspec;
- GValue val = G_VALUE_INIT;
- guint32 ret = 0;
-
- pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (setting), prop);
- g_assert (pspec);
- g_value_init (&val, pspec->value_type);
- g_param_value_set_default (pspec, &val);
- g_assert (G_VALUE_HOLDS_UINT (&val));
- ret = g_value_get_uint (&val);
- g_value_unset (&val);
- return ret;
+ return NM_G_PARAM_SPEC_GET_DEFAULT_BOOLEAN (g_object_class_find_property (G_OBJECT_GET_CLASS (setting), prop));
}
-static guint64
-get_setting_default_uint64 (NMSetting *setting, const char *prop)
+static guint
+get_setting_default_uint (gpointer setting, const char *prop)
{
- GParamSpec *pspec;
- GValue val = G_VALUE_INIT;
- guint32 ret = 0;
-
- pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (setting), prop);
- g_assert (pspec);
- g_value_init (&val, pspec->value_type);
- g_param_value_set_default (pspec, &val);
- g_assert (G_VALUE_HOLDS_UINT64 (&val));
- ret = g_value_get_uint64 (&val);
- g_value_unset (&val);
- return ret;
+ return NM_G_PARAM_SPEC_GET_DEFAULT_UINT (g_object_class_find_property (G_OBJECT_GET_CLASS (setting), prop));
}
-static gboolean
-get_setting_default_boolean (NMSetting *setting, const char *prop)
+static guint64
+get_setting_default_uint64 (gpointer setting, const char *prop)
{
- GParamSpec *pspec;
- GValue val = G_VALUE_INIT;
- gboolean ret = 0;
-
- pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (setting), prop);
- g_assert (pspec);
- g_value_init (&val, pspec->value_type);
- g_param_value_set_default (pspec, &val);
- g_assert (G_VALUE_HOLDS_BOOLEAN (&val));
- ret = g_value_get_boolean (&val);
- g_value_unset (&val);
- return ret;
+ return NM_G_PARAM_SPEC_GET_DEFAULT_UINT64 (g_object_class_find_property (G_OBJECT_GET_CLASS (setting), prop));
}
static gboolean
@@ -1453,7 +1420,7 @@ static gboolean
write_bridge_setting (NMConnection *connection, shvarFile *ifcfg, gboolean *wired, GError **error)
{
NMSettingBridge *s_bridge;
- guint32 i;
+ guint32 u32;
guint64 u64;
gboolean b;
const char *s;
@@ -1477,32 +1444,32 @@ write_bridge_setting (NMConnection *connection, shvarFile *ifcfg, gboolean *wire
if (nm_setting_bridge_get_stp (s_bridge)) {
svSetValueStr (ifcfg, "STP", "yes");
- i = nm_setting_bridge_get_forward_delay (s_bridge);
- if (i != get_setting_default_uint (NM_SETTING (s_bridge), NM_SETTING_BRIDGE_FORWARD_DELAY))
- svSetValueInt64 (ifcfg, "DELAY", i);
+ u32 = nm_setting_bridge_get_forward_delay (s_bridge);
+ if (u32 != get_setting_default_uint (s_bridge, NM_SETTING_BRIDGE_FORWARD_DELAY))
+ svSetValueInt64 (ifcfg, "DELAY", u32);
g_string_append_printf (opts, "priority=%u", nm_setting_bridge_get_priority (s_bridge));
- i = nm_setting_bridge_get_hello_time (s_bridge);
- if (i != get_setting_default_uint (NM_SETTING (s_bridge), NM_SETTING_BRIDGE_HELLO_TIME)) {
+ u32 = nm_setting_bridge_get_hello_time (s_bridge);
+ if (u32 != get_setting_default_uint (s_bridge, NM_SETTING_BRIDGE_HELLO_TIME)) {
if (opts->len)
g_string_append_c (opts, ' ');
- g_string_append_printf (opts, "hello_time=%u", i);
+ g_string_append_printf (opts, "hello_time=%u", u32);
}
- i = nm_setting_bridge_get_max_age (s_bridge);
- if (i != get_setting_default_uint (NM_SETTING (s_bridge), NM_SETTING_BRIDGE_MAX_AGE)) {
+ u32 = nm_setting_bridge_get_max_age (s_bridge);
+ if (u32 != get_setting_default_uint (s_bridge, NM_SETTING_BRIDGE_MAX_AGE)) {
if (opts->len)
g_string_append_c (opts, ' ');
- g_string_append_printf (opts, "max_age=%u", i);
+ g_string_append_printf (opts, "max_age=%u", u32);
}
}
- i = nm_setting_bridge_get_ageing_time (s_bridge);
- if (i != get_setting_default_uint (NM_SETTING (s_bridge), NM_SETTING_BRIDGE_AGEING_TIME)) {
+ u32 = nm_setting_bridge_get_ageing_time (s_bridge);
+ if (u32 != get_setting_default_uint (s_bridge, NM_SETTING_BRIDGE_AGEING_TIME)) {
if (opts->len)
g_string_append_c (opts, ' ');
- g_string_append_printf (opts, "ageing_time=%u", i);
+ g_string_append_printf (opts, "ageing_time=%u", u32);
}
s = nm_setting_bridge_get_group_address (s_bridge);
@@ -1512,93 +1479,93 @@ write_bridge_setting (NMConnection *connection, shvarFile *ifcfg, gboolean *wire
g_string_append_printf (opts, "group_address=%s", s);
}
- i = nm_setting_bridge_get_group_forward_mask (s_bridge);
- if (i != get_setting_default_uint (NM_SETTING (s_bridge), NM_SETTING_BRIDGE_GROUP_FORWARD_MASK)) {
+ u32 = nm_setting_bridge_get_group_forward_mask (s_bridge);
+ if (u32 != get_setting_default_uint (s_bridge, NM_SETTING_BRIDGE_GROUP_FORWARD_MASK)) {
if (opts->len)
g_string_append_c (opts, ' ');
- g_string_append_printf (opts, "group_fwd_mask=%u", i);
+ g_string_append_printf (opts, "group_fwd_mask=%u", u32);
}
- i = nm_setting_bridge_get_multicast_hash_max (s_bridge);
- if (i != get_setting_default_uint (NM_SETTING (s_bridge), NM_SETTING_BRIDGE_MULTICAST_HASH_MAX)) {
+ u32 = nm_setting_bridge_get_multicast_hash_max (s_bridge);
+ if (u32 != get_setting_default_uint (s_bridge, NM_SETTING_BRIDGE_MULTICAST_HASH_MAX)) {
if (opts->len)
g_string_append_c (opts, ' ');
- g_string_append_printf (opts, "multicast_hash_max=%u", i);
+ g_string_append_printf (opts, "multicast_hash_max=%u", u32);
}
- i = nm_setting_bridge_get_multicast_last_member_count (s_bridge);
- if (i != get_setting_default_uint (NM_SETTING (s_bridge), NM_SETTING_BRIDGE_MULTICAST_LAST_MEMBER_COUNT)) {
+ u32 = nm_setting_bridge_get_multicast_last_member_count (s_bridge);
+ if (u32 != get_setting_default_uint (s_bridge, NM_SETTING_BRIDGE_MULTICAST_LAST_MEMBER_COUNT)) {
if (opts->len)
g_string_append_c (opts, ' ');
- g_string_append_printf (opts, "multicast_last_member_count=%u", i);
+ g_string_append_printf (opts, "multicast_last_member_count=%u", u32);
}
u64 = nm_setting_bridge_get_multicast_last_member_interval (s_bridge);
- if (u64 != get_setting_default_uint64 (NM_SETTING (s_bridge), NM_SETTING_BRIDGE_MULTICAST_LAST_MEMBER_INTERVAL)) {
+ if (u64 != get_setting_default_uint64 (s_bridge, NM_SETTING_BRIDGE_MULTICAST_LAST_MEMBER_INTERVAL)) {
if (opts->len)
g_string_append_c (opts, ' ');
g_string_append_printf (opts, "multicast_last_member_interval=%"G_GUINT64_FORMAT, u64);
}
u64 = nm_setting_bridge_get_multicast_membership_interval (s_bridge);
- if (u64 != get_setting_default_uint64 (NM_SETTING (s_bridge), NM_SETTING_BRIDGE_MULTICAST_MEMBERSHIP_INTERVAL)) {
+ if (u64 != get_setting_default_uint64 (s_bridge, NM_SETTING_BRIDGE_MULTICAST_MEMBERSHIP_INTERVAL)) {
if (opts->len)
g_string_append_c (opts, ' ');
g_string_append_printf (opts, "multicast_membership_interval=%"G_GUINT64_FORMAT, u64);
}
b = nm_setting_bridge_get_multicast_querier (s_bridge);
- if (b != get_setting_default_boolean (NM_SETTING (s_bridge), NM_SETTING_BRIDGE_MULTICAST_QUERIER)) {
+ if (b != get_setting_default_boolean (s_bridge, NM_SETTING_BRIDGE_MULTICAST_QUERIER)) {
if (opts->len)
g_string_append_c (opts, ' ');
g_string_append_printf (opts, "multicast_querier=%u", (guint) b);
}
u64 = nm_setting_bridge_get_multicast_querier_interval (s_bridge);
- if (u64 != get_setting_default_uint64 (NM_SETTING (s_bridge), NM_SETTING_BRIDGE_MULTICAST_QUERIER_INTERVAL)) {
+ if (u64 != get_setting_default_uint64 (s_bridge, NM_SETTING_BRIDGE_MULTICAST_QUERIER_INTERVAL)) {
if (opts->len)
g_string_append_c (opts, ' ');
g_string_append_printf (opts, "multicast_querier_interval=%"G_GUINT64_FORMAT, u64);
}
u64 = nm_setting_bridge_get_multicast_query_interval (s_bridge);
- if (u64 != get_setting_default_uint64 (NM_SETTING (s_bridge), NM_SETTING_BRIDGE_MULTICAST_QUERY_INTERVAL)) {
+ if (u64 != get_setting_default_uint64 (s_bridge, NM_SETTING_BRIDGE_MULTICAST_QUERY_INTERVAL)) {
if (opts->len)
g_string_append_c (opts, ' ');
g_string_append_printf (opts, "multicast_query_interval=%"G_GUINT64_FORMAT, u64);
}
u64 = nm_setting_bridge_get_multicast_query_response_interval (s_bridge);
- if (u64 != get_setting_default_uint64 (NM_SETTING (s_bridge), NM_SETTING_BRIDGE_MULTICAST_QUERY_RESPONSE_INTERVAL)) {
+ if (u64 != get_setting_default_uint64 (s_bridge, NM_SETTING_BRIDGE_MULTICAST_QUERY_RESPONSE_INTERVAL)) {
if (opts->len)
g_string_append_c (opts, ' ');
g_string_append_printf (opts, "multicast_query_response_interval=%"G_GUINT64_FORMAT, u64);
}
b = nm_setting_bridge_get_multicast_query_use_ifaddr (s_bridge);
- if (b != get_setting_default_boolean (NM_SETTING (s_bridge), NM_SETTING_BRIDGE_MULTICAST_QUERY_USE_IFADDR)) {
+ if (b != get_setting_default_boolean (s_bridge, NM_SETTING_BRIDGE_MULTICAST_QUERY_USE_IFADDR)) {
if (opts->len)
g_string_append_c (opts, ' ');
g_string_append_printf (opts, "multicast_query_use_ifaddr=%u", (guint) b);
}
b = nm_setting_bridge_get_multicast_snooping (s_bridge);
- if (b != get_setting_default_boolean (NM_SETTING (s_bridge), NM_SETTING_BRIDGE_MULTICAST_SNOOPING)) {
+ if (b != get_setting_default_boolean (s_bridge, NM_SETTING_BRIDGE_MULTICAST_SNOOPING)) {
if (opts->len)
g_string_append_c (opts, ' ');
g_string_append_printf (opts, "multicast_snooping=%u", (guint32) b);
}
- i = nm_setting_bridge_get_multicast_startup_query_count (s_bridge);
- if (i != get_setting_default_uint (NM_SETTING (s_bridge), NM_SETTING_BRIDGE_MULTICAST_STARTUP_QUERY_COUNT)) {
+ u32 = nm_setting_bridge_get_multicast_startup_query_count (s_bridge);
+ if (u32 != get_setting_default_uint (s_bridge, NM_SETTING_BRIDGE_MULTICAST_STARTUP_QUERY_COUNT)) {
if (opts->len)
g_string_append_c (opts, ' ');
- g_string_append_printf (opts, "multicast_startup_query_count=%u", i);
+ g_string_append_printf (opts, "multicast_startup_query_count=%u", u32);
}
u64 = nm_setting_bridge_get_multicast_startup_query_interval (s_bridge);
- if (u64 != get_setting_default_uint64 (NM_SETTING (s_bridge), NM_SETTING_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL)) {
+ if (u64 != get_setting_default_uint64 (s_bridge, NM_SETTING_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL)) {
if (opts->len)
g_string_append_c (opts, ' ');
g_string_append_printf (opts, "multicast_startup_query_interval=%"G_GUINT64_FORMAT, u64);
@@ -1612,17 +1579,17 @@ write_bridge_setting (NMConnection *connection, shvarFile *ifcfg, gboolean *wire
}
b = nm_setting_bridge_get_vlan_filtering (s_bridge);
- if (b != get_setting_default_boolean (NM_SETTING (s_bridge), NM_SETTING_BRIDGE_VLAN_FILTERING)) {
+ if (b != get_setting_default_boolean (s_bridge, NM_SETTING_BRIDGE_VLAN_FILTERING)) {
if (opts->len)
g_string_append_c (opts, ' ');
g_string_append_printf (opts, "vlan_filtering=%u", (guint32) b);
}
- i = nm_setting_bridge_get_vlan_default_pvid (s_bridge);
- if (i != get_setting_default_uint (NM_SETTING (s_bridge), NM_SETTING_BRIDGE_VLAN_DEFAULT_PVID)) {
+ u32 = nm_setting_bridge_get_vlan_default_pvid (s_bridge);
+ if (u32 != get_setting_default_uint (s_bridge, NM_SETTING_BRIDGE_VLAN_DEFAULT_PVID)) {
if (opts->len)
g_string_append_c (opts, ' ');
- g_string_append_printf (opts, "default_pvid=%u", i);
+ g_string_append_printf (opts, "default_pvid=%u", u32);
}
s = nm_setting_bridge_get_vlan_protocol (s_bridge);
@@ -1633,7 +1600,7 @@ write_bridge_setting (NMConnection *connection, shvarFile *ifcfg, gboolean *wire
}
b = nm_setting_bridge_get_vlan_stats_enabled (s_bridge);
- if (b != get_setting_default_boolean (NM_SETTING (s_bridge), NM_SETTING_BRIDGE_VLAN_STATS_ENABLED)) {
+ if (b != get_setting_default_boolean (s_bridge, NM_SETTING_BRIDGE_VLAN_STATS_ENABLED)) {
if (opts->len)
g_string_append_c (opts, ' ');
g_string_append_printf (opts, "vlan_stats_enabled=%u", (guint) b);
@@ -1661,7 +1628,7 @@ static gboolean
write_bridge_port_setting (NMConnection *connection, shvarFile *ifcfg, GError **error)
{
NMSettingBridgePort *s_port;
- guint32 i;
+ guint32 u32;
GString *string;
s_port = nm_connection_get_setting_bridge_port (connection);
@@ -1671,15 +1638,15 @@ write_bridge_port_setting (NMConnection *connection, shvarFile *ifcfg, GError **
/* Bridge options */
string = g_string_sized_new (32);
- i = nm_setting_bridge_port_get_priority (s_port);
- if (i != get_setting_default_uint (NM_SETTING (s_port), NM_SETTING_BRIDGE_PORT_PRIORITY))
- g_string_append_printf (string, "priority=%u", i);
+ u32 = nm_setting_bridge_port_get_priority (s_port);
+ if (u32 != get_setting_default_uint (NM_SETTING (s_port), NM_SETTING_BRIDGE_PORT_PRIORITY))
+ g_string_append_printf (string, "priority=%u", u32);
- i = nm_setting_bridge_port_get_path_cost (s_port);
- if (i != get_setting_default_uint (NM_SETTING (s_port), NM_SETTING_BRIDGE_PORT_PATH_COST)) {
+ u32 = nm_setting_bridge_port_get_path_cost (s_port);
+ if (u32 != get_setting_default_uint (NM_SETTING (s_port), NM_SETTING_BRIDGE_PORT_PATH_COST)) {
if (string->len)
g_string_append_c (string, ' ');
- g_string_append_printf (string, "path_cost=%u", i);
+ g_string_append_printf (string, "path_cost=%u", u32);
}
if (nm_setting_bridge_port_get_hairpin_mode (s_port)) {