bridge: merge branch 'th/bridge-default-value-cleanup'

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/492
This commit is contained in:
Thomas Haller 2020-05-08 08:05:05 +02:00
commit 4929879964
No known key found for this signature in database
GPG key ID: 29C2366E4DFC5728
7 changed files with 347 additions and 289 deletions

View file

@ -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

View file

@ -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);

View file

@ -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);

View file

@ -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

View file

@ -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);

View file

@ -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.

View file

@ -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;
return NM_G_PARAM_SPEC_GET_DEFAULT_BOOLEAN (g_object_class_find_property (G_OBJECT_GET_CLASS (setting), prop));
}
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;
static guint
get_setting_default_uint (gpointer setting, const char *prop)
{
return NM_G_PARAM_SPEC_GET_DEFAULT_UINT (g_object_class_find_property (G_OBJECT_GET_CLASS (setting), prop));
}
static guint64
get_setting_default_uint64 (NMSetting *setting, const char *prop)
get_setting_default_uint64 (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;
}
static gboolean
get_setting_default_boolean (NMSetting *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)) {