On 6/23/25 11:45, Fabian Pfitzner wrote: > Put mcast querier dumping code into a shared function. This function > will be called from the bridge utility in a later patch. > > Adapt the code such that the vtb parameter is used > instead of tb[IFLA_BR_MCAST_QUERIER_STATE]. > > Signed-off-by: Fabian Pfitzner <[email protected]> > --- > > I decided to not only move the code into a separate function, but also > to adapt it to fit into the function. If I split it into a pure refactoring > and an adapting commit, the former will not compile preventing git bisects. > > include/bridge.h | 3 +++ > ip/iplink_bridge.c | 58 ++------------------------------------------ > lib/bridge.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 65 insertions(+), 56 deletions(-) > > diff --git a/include/bridge.h b/include/bridge.h > index 8bcd1e38..b2f978f4 100644 > --- a/include/bridge.h > +++ b/include/bridge.h > @@ -3,9 +3,12 @@ > #define __BRIDGE_H__ 1 > > #include <linux/if_bridge.h> > +#include <linux/rtnetlink.h> > > void bridge_print_vlan_flags(__u16 flags); > void bridge_print_vlan_stats_only(const struct bridge_vlan_xstats *vstats); > void bridge_print_vlan_stats(const struct bridge_vlan_xstats *vstats); > > +void bridge_print_mcast_querier_state(const struct rtattr* vtb); > + > #endif /* __BRIDGE_H__ */ > diff --git a/ip/iplink_bridge.c b/ip/iplink_bridge.c > index 31e7cb5e..4e1f5147 100644 > --- a/ip/iplink_bridge.c > +++ b/ip/iplink_bridge.c > @@ -682,62 +682,8 @@ static void bridge_print_opt(struct link_util *lu, FILE > *f, struct rtattr *tb[]) > rta_getattr_u8(tb[IFLA_BR_MCAST_QUERIER])); > > if (tb[IFLA_BR_MCAST_QUERIER_STATE]) { > - struct rtattr *bqtb[BRIDGE_QUERIER_MAX + 1]; > - SPRINT_BUF(other_time); > - > - parse_rtattr_nested(bqtb, BRIDGE_QUERIER_MAX, > tb[IFLA_BR_MCAST_QUERIER_STATE]); > - memset(other_time, 0, sizeof(other_time)); > - > - open_json_object("mcast_querier_state_ipv4"); > - if (bqtb[BRIDGE_QUERIER_IP_ADDRESS]) { > - print_string(PRINT_FP, > - NULL, > - "%s ", > - "mcast_querier_ipv4_addr"); > - print_color_string(PRINT_ANY, > - COLOR_INET, > - "mcast_querier_ipv4_addr", > - "%s ", > - format_host_rta(AF_INET, > bqtb[BRIDGE_QUERIER_IP_ADDRESS])); > - } > - if (bqtb[BRIDGE_QUERIER_IP_PORT]) > - print_uint(PRINT_ANY, > - "mcast_querier_ipv4_port", > - "mcast_querier_ipv4_port %u ", > - rta_getattr_u32(bqtb[BRIDGE_QUERIER_IP_PORT])); > - if (bqtb[BRIDGE_QUERIER_IP_OTHER_TIMER]) > - print_string(PRINT_ANY, > - "mcast_querier_ipv4_other_timer", > - "mcast_querier_ipv4_other_timer %s ", > - sprint_time64( > - > rta_getattr_u64(bqtb[BRIDGE_QUERIER_IP_OTHER_TIMER]), > - > other_time)); > - close_json_object(); > - open_json_object("mcast_querier_state_ipv6"); > - if (bqtb[BRIDGE_QUERIER_IPV6_ADDRESS]) { > - print_string(PRINT_FP, > - NULL, > - "%s ", > - "mcast_querier_ipv6_addr"); > - print_color_string(PRINT_ANY, > - COLOR_INET6, > - "mcast_querier_ipv6_addr", > - "%s ", > - format_host_rta(AF_INET6, > bqtb[BRIDGE_QUERIER_IPV6_ADDRESS])); > - } > - if (bqtb[BRIDGE_QUERIER_IPV6_PORT]) > - print_uint(PRINT_ANY, > - "mcast_querier_ipv6_port", > - "mcast_querier_ipv6_port %u ", > - > rta_getattr_u32(bqtb[BRIDGE_QUERIER_IPV6_PORT])); > - if (bqtb[BRIDGE_QUERIER_IPV6_OTHER_TIMER]) > - print_string(PRINT_ANY, > - "mcast_querier_ipv6_other_timer", > - "mcast_querier_ipv6_other_timer %s ", > - sprint_time64( > - > rta_getattr_u64(bqtb[BRIDGE_QUERIER_IPV6_OTHER_TIMER]), > - > other_time)); > - close_json_object(); > + struct rtattr *vtb = tb[IFLA_BR_MCAST_QUERIER_STATE]; > + bridge_print_mcast_querier_state(vtb); > } > > if (tb[IFLA_BR_MCAST_HASH_ELASTICITY])
Please run checkpatch against the patches before sending them. WARNING: Missing a blank line after declarations #175: FILE: ip/iplink_bridge.c:685: + struct rtattr *vtb = tb[IFLA_BR_MCAST_QUERIER_STATE]; + bridge_print_mcast_querier_state(vtb);
