mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-02-13 14:00:35 +01:00
bridge: merge branch 'th/bridge-default-value-cleanup'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/492
This commit is contained in:
commit
4929879964
7 changed files with 347 additions and 289 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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)) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue