summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2020-05-05 14:40:04 +0200
committerThomas Haller <thaller@redhat.com>2020-05-07 14:39:43 +0200
commitfe64f2e5b7fd53a7d6ca5626cd8ca27e0d3be039 (patch)
treed21413fe50f653286ebae80250a4ae3d39cae5dd
parentfecf77a9253983e47925b84e8f829ea66358c513 (diff)
downloadNetworkManager-th/bridge-default-value-cleanup.tar.gz
bridge: refactor definition of options array to use a macro and C99 designated initializerth/bridge-default-value-cleanup
Yes, it's a macro and it's more lines of code. But I think this is much easier to read and to maintain.
-rw-r--r--src/devices/nm-device-bridge.c244
1 files changed, 138 insertions, 106 deletions
diff --git a/src/devices/nm-device-bridge.c b/src/devices/nm-device-bridge.c
index 064dd8d2b8..544e66140c 100644
--- a/src/devices/nm-device-bridge.c
+++ b/src/devices/nm-device-bridge.c
@@ -245,116 +245,148 @@ typedef struct {
bool only_with_stp;
} Option;
+#define OPTION(_name, _sysname, ...) \
+ { \
+ .name = ""_name"", \
+ .sysname = ""_sysname"", \
+ __VA_ARGS__ \
+ }
+
+#define OPTION_TYPE_INT(min, max, def) \
+ .nm_min = (min), .nm_max = (max), .nm_default = (def)
+
+#define OPTION_TYPE_BOOL(def) \
+ OPTION_TYPE_INT (FALSE, TRUE, def)
+
+#define OPTION_TYPE_TOFROM(to, fro) \
+ .to_sysfs = (to), .from_sysfs = (fro)
+
static const Option master_options[] = {
- { NM_SETTING_BRIDGE_STP, "stp_state", /* this must stay as the first item */
- NULL, NULL,
- 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