mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-25 11:50:14 +01:00
bridge: refactor definition of options array to use a macro and C99 designated initializer
Yes, it's a macro and it's more lines of code. But I think this is much easier to read and to maintain.
This commit is contained in:
parent
7c22710c17
commit
6044fce960
1 changed files with 138 additions and 106 deletions
|
|
@ -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,
|
||||
FALSE, TRUE, NM_BRIDGE_STP_DEF,
|
||||
FALSE, FALSE, FALSE },
|
||||
{ NM_SETTING_BRIDGE_PRIORITY, "priority",
|
||||
NULL, NULL,
|
||||
NM_BRIDGE_PRIORITY_MIN, NM_BRIDGE_PRIORITY_MAX, NM_BRIDGE_PRIORITY_DEF,
|
||||
TRUE, FALSE, TRUE },
|
||||
{ NM_SETTING_BRIDGE_FORWARD_DELAY, "forward_delay",
|
||||
NULL, NULL,
|
||||
NM_BRIDGE_FORWARD_DELAY_MIN, NM_BRIDGE_FORWARD_DELAY_MAX, NM_BRIDGE_FORWARD_DELAY_DEF,
|
||||
TRUE, TRUE, TRUE},
|
||||
{ NM_SETTING_BRIDGE_HELLO_TIME, "hello_time",
|
||||
NULL, NULL,
|
||||
NM_BRIDGE_HELLO_TIME_MIN, NM_BRIDGE_HELLO_TIME_MAX, NM_BRIDGE_HELLO_TIME_DEF,
|
||||
TRUE, TRUE, TRUE },
|
||||
{ NM_SETTING_BRIDGE_MAX_AGE, "max_age",
|
||||
NULL, NULL,
|
||||
NM_BRIDGE_MAX_AGE_MIN, NM_BRIDGE_MAX_AGE_MAX, NM_BRIDGE_MAX_AGE_DEF,
|
||||
TRUE, TRUE, TRUE },
|
||||
{ NM_SETTING_BRIDGE_AGEING_TIME, "ageing_time",
|
||||
NULL, NULL,
|
||||
NM_BRIDGE_AGEING_TIME_MIN, NM_BRIDGE_AGEING_TIME_MAX, NM_BRIDGE_AGEING_TIME_DEF,
|
||||
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_BRIDGE_MULTICAST_HASH_MAX_MIN, NM_BRIDGE_MULTICAST_HASH_MAX_MAX, NM_BRIDGE_MULTICAST_HASH_MAX_DEF,
|
||||
FALSE, FALSE, FALSE },
|
||||
{ NM_SETTING_BRIDGE_MULTICAST_LAST_MEMBER_COUNT, "multicast_last_member_count",
|
||||
NULL, NULL,
|
||||
NM_BRIDGE_MULTICAST_LAST_MEMBER_COUNT_MIN, NM_BRIDGE_MULTICAST_LAST_MEMBER_COUNT_MAX, NM_BRIDGE_MULTICAST_LAST_MEMBER_COUNT_DEF,
|
||||
FALSE, FALSE, FALSE },
|
||||
{ NM_SETTING_BRIDGE_MULTICAST_LAST_MEMBER_INTERVAL, "multicast_last_member_interval",
|
||||
NULL, NULL,
|
||||
NM_BRIDGE_MULTICAST_LAST_MEMBER_INTERVAL_MIN, NM_BRIDGE_MULTICAST_LAST_MEMBER_INTERVAL_MAX, NM_BRIDGE_MULTICAST_LAST_MEMBER_INTERVAL_DEF,
|
||||
FALSE, FALSE, FALSE },
|
||||
{ NM_SETTING_BRIDGE_MULTICAST_MEMBERSHIP_INTERVAL, "multicast_membership_interval",
|
||||
NULL, NULL,
|
||||
NM_BRIDGE_MULTICAST_MEMBERSHIP_INTERVAL_MIN, NM_BRIDGE_MULTICAST_MEMBERSHIP_INTERVAL_MAX, NM_BRIDGE_MULTICAST_MEMBERSHIP_INTERVAL_DEF,
|
||||
FALSE, FALSE, FALSE },
|
||||
{ NM_SETTING_BRIDGE_MULTICAST_QUERIER, "multicast_querier",
|
||||
NULL, NULL,
|
||||
FALSE, TRUE, NM_BRIDGE_MULTICAST_QUERIER_DEF,
|
||||
FALSE, FALSE, FALSE },
|
||||
{ NM_SETTING_BRIDGE_MULTICAST_QUERIER_INTERVAL, "multicast_querier_interval",
|
||||
NULL, NULL,
|
||||
NM_BRIDGE_MULTICAST_QUERIER_INTERVAL_MIN, NM_BRIDGE_MULTICAST_QUERIER_INTERVAL_MAX, NM_BRIDGE_MULTICAST_QUERIER_INTERVAL_DEF,
|
||||
FALSE, FALSE, FALSE },
|
||||
{ NM_SETTING_BRIDGE_MULTICAST_QUERY_INTERVAL, "multicast_query_interval",
|
||||
NULL, NULL,
|
||||
NM_BRIDGE_MULTICAST_QUERY_INTERVAL_MIN, NM_BRIDGE_MULTICAST_QUERY_INTERVAL_MAX, NM_BRIDGE_MULTICAST_QUERY_INTERVAL_DEF,
|
||||
FALSE, FALSE, FALSE },
|
||||
{ NM_SETTING_BRIDGE_MULTICAST_QUERY_RESPONSE_INTERVAL, "multicast_query_response_interval",
|
||||
NULL, NULL,
|
||||
NM_BRIDGE_MULTICAST_QUERY_RESPONSE_INTERVAL_MIN, NM_BRIDGE_MULTICAST_QUERY_RESPONSE_INTERVAL_MAX, NM_BRIDGE_MULTICAST_QUERY_RESPONSE_INTERVAL_DEF,
|
||||
FALSE, FALSE, FALSE },
|
||||
{ NM_SETTING_BRIDGE_MULTICAST_QUERY_USE_IFADDR, "multicast_query_use_ifaddr",
|
||||
NULL, NULL,
|
||||
FALSE, TRUE, NM_BRIDGE_MULTICAST_QUERY_USE_IFADDR_DEF,
|
||||
FALSE, FALSE, FALSE },
|
||||
{ NM_SETTING_BRIDGE_MULTICAST_SNOOPING, "multicast_snooping",
|
||||
NULL, NULL,
|
||||
FALSE, TRUE, NM_BRIDGE_MULTICAST_SNOOPING_DEF,
|
||||
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,
|
||||
NM_BRIDGE_MULTICAST_STARTUP_QUERY_COUNT_MIN, NM_BRIDGE_MULTICAST_STARTUP_QUERY_COUNT_MAX, NM_BRIDGE_MULTICAST_STARTUP_QUERY_COUNT_DEF,
|
||||
FALSE, FALSE, FALSE },
|
||||
{ NM_SETTING_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL, "multicast_startup_query_interval",
|
||||
NULL, NULL,
|
||||
NM_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL_MIN, NM_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL_MAX, NM_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL_DEF,
|
||||
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,
|
||||
FALSE, TRUE, NM_BRIDGE_VLAN_STATS_ENABLED_DEF,
|
||||
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,
|
||||
NM_BRIDGE_PORT_PRIORITY_MIN, NM_BRIDGE_PORT_PRIORITY_MAX, NM_BRIDGE_PORT_PRIORITY_DEF,
|
||||
TRUE, FALSE },
|
||||
{ NM_SETTING_BRIDGE_PORT_PATH_COST, "path_cost",
|
||||
NULL, NULL,
|
||||
NM_BRIDGE_PORT_PATH_COST_MIN, NM_BRIDGE_PORT_PATH_COST_MAX, NM_BRIDGE_PORT_PATH_COST_DEF,
|
||||
TRUE, FALSE },
|
||||
{ NM_SETTING_BRIDGE_PORT_HAIRPIN_MODE, "hairpin_mode",
|
||||
NULL, NULL,
|
||||
FALSE, TRUE, FALSE,
|
||||
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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue