diff --git a/.gitignore b/.gitignore index ac833f0..61143b4 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/libteam-1.29.tar.gz +SOURCES/libteam-1.31.tar.gz diff --git a/.libteam.metadata b/.libteam.metadata index 92c4c67..c0fba93 100644 --- a/.libteam.metadata +++ b/.libteam.metadata @@ -1 +1 @@ -2dbdd6769c61381f84a31553bc5502a60376e33b SOURCES/libteam-1.29.tar.gz +4e5e0a0d0682f27a0850fac1f9bababdb991f14a SOURCES/libteam-1.31.tar.gz diff --git a/SOURCES/libteam-Revert-teamd-Disregard-current-state-when-considerin.patch b/SOURCES/libteam-Revert-teamd-Disregard-current-state-when-considerin.patch new file mode 100644 index 0000000..29c74c8 --- /dev/null +++ b/SOURCES/libteam-Revert-teamd-Disregard-current-state-when-considerin.patch @@ -0,0 +1,55 @@ +From 61efd6de2fbb8ee077863ee5a355ac3dfd9365b9 Mon Sep 17 00:00:00 2001 +Message-Id: <61efd6de2fbb8ee077863ee5a355ac3dfd9365b9.1599144624.git.lucien.xin@gmail.com> +From: Xin Long +Date: Tue, 1 Sep 2020 13:59:27 +0800 +Subject: [PATCH] Revert "teamd: Disregard current state when considering port + enablement" + +This reverts commit deadb5b715227429a1879b187f5906b39151eca9. + +As Patrick noticed, with that commit, teamd_port_check_enable() +would set the team port to the new state unconditionally, which +triggers another change message from kernel to userspace, then +teamd_port_check_enable() is called again to set the team port +to the new state. + +This would go around and around to update the team port state, +and even cause teamd to consume 100% cpu. + +As the issue caused by that commit is serious, it has to be +reverted. As for the issued fixed by that commit, I would +propose a new fix later. + +Signed-off-by: Jiri Pirko +--- + teamd/teamd_per_port.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/teamd/teamd_per_port.c b/teamd/teamd_per_port.c +index 166da57..d429753 100644 +--- a/teamd/teamd_per_port.c ++++ b/teamd/teamd_per_port.c +@@ -442,14 +442,18 @@ int teamd_port_check_enable(struct teamd_context *ctx, + bool should_enable, bool should_disable) + { + bool new_enabled_state; ++ bool curr_enabled_state; + int err; + + if (!teamd_port_present(ctx, tdport)) + return 0; ++ err = teamd_port_enabled(ctx, tdport, &curr_enabled_state); ++ if (err) ++ return err; + +- if (should_enable) ++ if (!curr_enabled_state && should_enable) + new_enabled_state = true; +- else if (should_disable) ++ else if (curr_enabled_state && should_disable) + new_enabled_state = false; + else + return 0; +-- +2.18.1 + diff --git a/SOURCES/libteam-libteam-wapper-teamd_log_dbg-with-teamd_log_dbgx.patch b/SOURCES/libteam-libteam-wapper-teamd_log_dbg-with-teamd_log_dbgx.patch deleted file mode 100644 index d40b13f..0000000 --- a/SOURCES/libteam-libteam-wapper-teamd_log_dbg-with-teamd_log_dbgx.patch +++ /dev/null @@ -1,848 +0,0 @@ -From f32310b9a5cc0322d8f5c85d94e3866326bc68ce Mon Sep 17 00:00:00 2001 -Message-Id: -From: Hangbin Liu -Date: Mon, 2 Dec 2019 16:28:17 +0800 -Subject: [PATCH 1/4] libteam: wapper teamd_log_dbg with teamd_log_dbgx - -Recently some users reported that they start to see debug messages in their -syslogs even with daemon_verbosity_level = LOG_INFO and without -g option. - -Actually this issue is there at the begining, the user would see the debug -messages if they run teamd with -d option. The reason that most users did -not notice this is because they are using libteam via NetworkManager, and -NetworkManager run libteam in frontend. - -But after commit e47d5db53873 ("teamd: add an option to force log -output to stdout, stderr or syslog"), NetworkManager will set -TEAM_LOG_OUTPUT=syslog in the environment. At the same time libdaemon -does not filter log levels if we use syslog(see function daemon_logv in -libdaemon). Then all the users would see the debug messages suddenly and -feels annoying. - -And here is the quote for daemon_set_verbosity() from libdaemon/dlog.h -""" -Allows to decide which messages to output on standard output/error -streams. All messages are logged to syslog and this setting does -not influence that. -""" - -Since we should not limit how our user(NM) used libteam. And libdaemon -is intend to not filter logs if use syslog. We'd better filter the -debug message ourselves, like via -g option. So I would prefer to -move all teamd_log_dbg to teamd_log_dbgx. After that, the user could -decide whether to enable debug or not by themselves with -g option. - -Signed-off-by: Hangbin Liu -Signed-off-by: Jiri Pirko ---- - teamd/teamd.c | 38 +++++++++++++++++++------------------- - teamd/teamd.h | 5 +++-- - teamd/teamd_balancer.c | 15 +++++++++------ - teamd/teamd_dbus.c | 6 +++--- - teamd/teamd_hash_func.c | 2 +- - teamd/teamd_link_watch.c | 8 ++++---- - teamd/teamd_lw_arp_ping.c | 12 ++++++------ - teamd/teamd_lw_ethtool.c | 4 ++-- - teamd/teamd_lw_nsna_ping.c | 2 +- - teamd/teamd_lw_psr.c | 8 ++++---- - teamd/teamd_lw_tipc.c | 10 +++++----- - teamd/teamd_per_port.c | 6 +++--- - teamd/teamd_runner_activebackup.c | 10 +++++----- - teamd/teamd_runner_lacp.c | 34 +++++++++++++++++----------------- - teamd/teamd_usock.c | 12 ++++++------ - teamd/teamd_zmq.c | 10 +++++----- - 16 files changed, 93 insertions(+), 89 deletions(-) - -diff --git a/teamd/teamd.c b/teamd/teamd.c -index 6c47312..9744021 100644 ---- a/teamd/teamd.c -+++ b/teamd/teamd.c -@@ -332,7 +332,7 @@ static int teamd_run_loop_do_callbacks(struct list_item *lcb_list, fd_set *fds, - if (err) { - teamd_log_warn("Loop callback failed with: %s", - strerror(-err)); -- teamd_log_dbg("Failed loop callback: %s, %p", -+ teamd_log_dbg(ctx, "Failed loop callback: %s, %p", - lcb->name, lcb->priv); - } - } -@@ -519,7 +519,7 @@ static int __teamd_loop_callback_fd_add(struct teamd_context *ctx, - list_add_tail(&ctx->run_loop.callback_list, &lcb->list); - else - list_add(&ctx->run_loop.callback_list, &lcb->list); -- teamd_log_dbg("Added loop callback: %s, %p", lcb->name, lcb->priv); -+ teamd_log_dbg(ctx, "Added loop callback: %s, %p", lcb->name, lcb->priv); - return 0; - - lcb_free: -@@ -636,7 +636,7 @@ void teamd_loop_callback_del(struct teamd_context *ctx, const char *cb_name, - list_del(&lcb->list); - if (lcb->is_period) - close(lcb->fd); -- teamd_log_dbg("Removed loop callback: %s, %p", -+ teamd_log_dbg(ctx, "Removed loop callback: %s, %p", - lcb->name, lcb->priv); - free(lcb->name); - free(lcb); -@@ -645,7 +645,7 @@ void teamd_loop_callback_del(struct teamd_context *ctx, const char *cb_name, - if (found) - teamd_run_loop_restart(ctx); - else -- teamd_log_dbg("Callback named \"%s\" not found.", cb_name); -+ teamd_log_dbg(ctx, "Callback named \"%s\" not found.", cb_name); - } - - int teamd_loop_callback_enable(struct teamd_context *ctx, const char *cb_name, -@@ -820,7 +820,7 @@ static int teamd_set_hwaddr(struct teamd_context *ctx) - if (err) - return 0; /* addr is not defined in config, no change needed */ - -- teamd_log_dbg("Hwaddr string: \"%s\".", hwaddr_str); -+ teamd_log_dbg(ctx, "Hwaddr string: \"%s\".", hwaddr_str); - err = parse_hwaddr(hwaddr_str, &hwaddr, &hwaddr_len); - if (err) { - teamd_log_err("Failed to parse hardware address."); -@@ -953,16 +953,16 @@ static int teamd_runner_init(struct teamd_context *ctx) - - err = teamd_config_string_get(ctx, &runner_name, "$.runner.name"); - if (err) { -- teamd_log_dbg("Failed to get team runner name from config."); -+ teamd_log_dbg(ctx, "Failed to get team runner name from config."); - runner_name = TEAMD_DEFAULT_RUNNER_NAME; - err = teamd_config_string_set(ctx, runner_name, "$.runner.name"); - if (err) { - teamd_log_err("Failed to set default team runner name in config."); - return err; - } -- teamd_log_dbg("Using default team runner \"%s\".", runner_name); -+ teamd_log_dbg(ctx, "Using default team runner \"%s\".", runner_name); - } else { -- teamd_log_dbg("Using team runner \"%s\".", runner_name); -+ teamd_log_dbg(ctx, "Using team runner \"%s\".", runner_name); - } - ctx->runner = teamd_find_runner(runner_name); - if (!ctx->runner) { -@@ -1108,12 +1108,12 @@ static void debug_log_port_list(struct teamd_context *ctx) - char buf[120]; - bool trunc; - -- teamd_log_dbg(""); -+ teamd_log_dbg(ctx, ""); - team_for_each_port(port, ctx->th) { - trunc = team_port_str(port, buf, sizeof(buf)); -- teamd_log_dbg("%s %s", buf, trunc ? "" : ""); -+ teamd_log_dbg(ctx, "%s %s", buf, trunc ? "" : ""); - } -- teamd_log_dbg(""); -+ teamd_log_dbg(ctx, ""); - } - - static void debug_log_option_list(struct teamd_context *ctx) -@@ -1139,12 +1139,12 @@ static void debug_log_ifinfo_list(struct teamd_context *ctx) - char buf[120]; - bool trunc; - -- teamd_log_dbg(""); -+ teamd_log_dbg(ctx, ""); - team_for_each_ifinfo(ifinfo, ctx->th) { - trunc = team_ifinfo_str(ifinfo, buf, sizeof(buf)); -- teamd_log_dbg("%s %s", buf, trunc ? "" : ""); -+ teamd_log_dbg(ctx, "%s %s", buf, trunc ? "" : ""); - } -- teamd_log_dbg(""); -+ teamd_log_dbg(ctx, ""); - } - - static int debug_change_handler_func(struct team_handle *th, void *priv, -@@ -1573,7 +1573,7 @@ static int teamd_generate_devname(struct teamd_context *ctx) - if (err) - return err; - } while (ifindex); -- teamd_log_dbg("Generated team device name \"%s\".", buf); -+ teamd_log_dbg(ctx, "Generated team device name \"%s\".", buf); - - ctx->team_devname = strdup(buf); - if (!ctx->team_devname) -@@ -1597,7 +1597,7 @@ static int teamd_get_devname(struct teamd_context *ctx, bool generate_enabled) - } - goto skip_set; - } else { -- teamd_log_dbg("Failed to get team device name from config."); -+ teamd_log_dbg(ctx, "Failed to get team device name from config."); - if (generate_enabled) { - err = teamd_generate_devname(ctx); - if (err) { -@@ -1617,7 +1617,7 @@ static int teamd_get_devname(struct teamd_context *ctx, bool generate_enabled) - } - - skip_set: -- teamd_log_dbg("Using team device \"%s\".", ctx->team_devname); -+ teamd_log_dbg(ctx, "Using team device \"%s\".", ctx->team_devname); - - err = asprintf(&ctx->ident, "%s_%s", ctx->argv0, ctx->team_devname); - if (err == -1) { -@@ -1835,9 +1835,9 @@ int main(int argc, char **argv) - daemon_log_ident = ctx->ident; - daemon_pid_file_proc = teamd_pid_file_proc; - -- teamd_log_dbg("Using PID file \"%s\"", daemon_pid_file_proc()); -+ teamd_log_dbg(ctx, "Using PID file \"%s\"", daemon_pid_file_proc()); - if (ctx->config_file) -- teamd_log_dbg("Using config file \"%s\"", ctx->config_file); -+ teamd_log_dbg(ctx, "Using config file \"%s\"", ctx->config_file); - - switch (ctx->cmd) { - case DAEMON_CMD_HELP: -diff --git a/teamd/teamd.h b/teamd/teamd.h -index 01bd022..469b769 100644 ---- a/teamd/teamd.h -+++ b/teamd/teamd.h -@@ -49,15 +49,16 @@ - #define teamd_log_err(args...) daemon_log(LOG_ERR, ##args) - #define teamd_log_warn(args...) daemon_log(LOG_WARNING, ##args) - #define teamd_log_info(args...) daemon_log(LOG_INFO, ##args) --#define teamd_log_dbg(args...) daemon_log(LOG_DEBUG, ##args) - - #define teamd_log_dbgx(ctx, val, args...) \ - if (val <= ctx->debug) \ - daemon_log(LOG_DEBUG, ##args) - -+#define teamd_log_dbg(ctx, args...) teamd_log_dbgx(ctx, 1, ##args) -+ - static inline void TEAMD_BUG(void) - { -- teamd_log_dbg("BUG: %s:%d\n", __FILE__, __LINE__); -+ daemon_log(LOG_DEBUG, "BUG: %s:%d\n", __FILE__, __LINE__); - assert(0); - } - -diff --git a/teamd/teamd_balancer.c b/teamd/teamd_balancer.c -index 25e8613..aa6389f 100644 ---- a/teamd/teamd_balancer.c -+++ b/teamd/teamd_balancer.c -@@ -174,12 +174,14 @@ static void tb_clear_rebalance_data(struct teamd_balancer *tb) - } - } - --static int tb_hash_to_port_remap(struct team_handle *th, -+static int tb_hash_to_port_remap(struct teamd_balancer *tb, -+ struct team_handle *th, - struct tb_hash_info *tbhi, - struct tb_port_info *tbpi) - { - struct team_option *option; - struct teamd_port *new_tdport = tbpi->tdport; -+ struct teamd_context *ctx = tb->ctx; - uint8_t hash = tbhi->hash; - int err; - -@@ -192,7 +194,7 @@ static int tb_hash_to_port_remap(struct team_handle *th, - err = team_set_option_value_u32(th, option, new_tdport->ifindex); - if (err) - return err; -- teamd_log_dbg("Remapped hash \"%u\" (delta %" PRIu64 ") to port %s.", -+ teamd_log_dbg(ctx, "Remapped hash \"%u\" (delta %" PRIu64 ") to port %s.", - hash, tb_stats_get_delta(&tbhi->stats), - new_tdport->ifname); - return 0; -@@ -203,6 +205,7 @@ static int tb_rebalance(struct teamd_balancer *tb, struct team_handle *th) - int err; - struct tb_hash_info *tbhi; - struct tb_port_info *tbpi; -+ struct teamd_context *ctx = tb->ctx; - - if (!tb->tx_balancing_enabled) - return 0; -@@ -216,7 +219,7 @@ static int tb_rebalance(struct teamd_balancer *tb, struct team_handle *th) - tbhi->rebalance.processed = true; - continue; - } -- err = tb_hash_to_port_remap(th, tbhi, tbpi); -+ err = tb_hash_to_port_remap(tb, th, tbhi, tbpi); - if (err) { - tbpi->rebalance.unusable = true; - continue; -@@ -228,7 +231,7 @@ static int tb_rebalance(struct teamd_balancer *tb, struct team_handle *th) - list_for_each_node_entry(tbpi, &tb->port_info_list, list) { - if (tbpi->rebalance.unusable) - continue; -- teamd_log_dbg("Port %s rebalanced, delta: %" PRIu64, -+ teamd_log_dbg(ctx, "Port %s rebalanced, delta: %" PRIu64, - tbpi->tdport->ifname, tbpi->rebalance.bytes); - } - return 0; -@@ -303,7 +306,7 @@ static int tb_option_change_handler_func(struct team_handle *th, void *priv, - array_index); - return -EINVAL; - } -- teamd_log_dbg("stats update for hash \"%u\": \"%" PRIu64 "\".", -+ teamd_log_dbg(ctx, "stats update for hash \"%u\": \"%" PRIu64 "\".", - array_index, lb_stats->tx_bytes); - tb_stats_update_hash(tb, array_index, - lb_stats->tx_bytes); -@@ -319,7 +322,7 @@ static int tb_option_change_handler_func(struct team_handle *th, void *priv, - port_ifindex); - return -EINVAL; - } -- teamd_log_dbg("stats update for port %s: \"%" PRIu64 "\".", -+ teamd_log_dbg(ctx, "stats update for port %s: \"%" PRIu64 "\".", - tdport->ifname, lb_stats->tx_bytes); - tb_stats_update_port(tb, tdport, - lb_stats->tx_bytes); -diff --git a/teamd/teamd_dbus.c b/teamd/teamd_dbus.c -index cdf21b1..5e7ea69 100644 ---- a/teamd/teamd_dbus.c -+++ b/teamd/teamd_dbus.c -@@ -178,7 +178,7 @@ static DBusHandlerResult message_handler(DBusConnection *con, - msg_interface = dbus_message_get_interface(message); - if (!method || !path || !msg_interface) - return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; -- teamd_log_dbg("dbus: %s.%s (%s)", msg_interface, method, path); -+ teamd_log_dbg(ctx, "dbus: %s.%s (%s)", msg_interface, method, path); - - if (!strcmp(method, "Introspect") && - !strcmp(msg_interface, "org.freedesktop.DBus.Introspectable")) { -@@ -504,7 +504,7 @@ int teamd_dbus_init(struct teamd_context *ctx) - if (err) - goto iface_fini; - id = dbus_connection_get_server_id(ctx->dbus.con), -- teamd_log_dbg("dbus: connected to %s with name %s", id, -+ teamd_log_dbg(ctx, "dbus: connected to %s with name %s", id, - dbus_bus_get_unique_name(ctx->dbus.con)); - dbus_free(id); - return 0; -@@ -541,7 +541,7 @@ int teamd_dbus_expose_name(struct teamd_context *ctx) - err = dbus_bus_request_name(ctx->dbus.con, service_name, 0, - &error); - if (err == DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) { -- teamd_log_dbg("dbus: have name %s", service_name); -+ teamd_log_dbg(ctx, "dbus: have name %s", service_name); - err = 0; - } else if (dbus_error_is_set(&error)) { - teamd_log_err("dbus: Failed to acquire %s: %s: %s", -diff --git a/teamd/teamd_hash_func.c b/teamd/teamd_hash_func.c -index 8923849..8c91639 100644 ---- a/teamd/teamd_hash_func.c -+++ b/teamd/teamd_hash_func.c -@@ -170,7 +170,7 @@ int teamd_hash_func_set(struct teamd_context *ctx) - int err; - - if (!teamd_config_path_exists(ctx, "$.runner.tx_hash")) { -- teamd_log_dbg("No Tx hash recipe found in config."); -+ teamd_log_dbg(ctx, "No Tx hash recipe found in config."); - err = teamd_hash_func_add_default_frags(ctx); - if (err) - return err; -diff --git a/teamd/teamd_link_watch.c b/teamd/teamd_link_watch.c -index 62f8267..5c626eb 100644 ---- a/teamd/teamd_link_watch.c -+++ b/teamd/teamd_link_watch.c -@@ -281,7 +281,7 @@ static int link_watch_load_config_one(struct teamd_context *ctx, - - err = team_get_port_user_linkup(ctx->th, tdport->ifindex, &linkup); - if (!err) { -- teamd_log_dbg("%s: Current user link state is \"%s\".", -+ teamd_log_dbg(ctx, "%s: Current user link state is \"%s\".", - tdport->ifname, linkup ? "up" : "down"); - } - -@@ -351,7 +351,7 @@ static int link_watch_event_watch_port_added(struct teamd_context *ctx, - cpcookie = teamd_config_path_cookie_get(ctx, "$.ports.%s.link_watch", - tdport->ifname); - if (cpcookie) { -- teamd_log_dbg("%s: Got link watch from port config.", -+ teamd_log_dbg(ctx, "%s: Got link watch from port config.", - tdport->ifname); - err = link_watch_load_config(ctx, tdport, cpcookie); - if (err) -@@ -360,7 +360,7 @@ static int link_watch_event_watch_port_added(struct teamd_context *ctx, - - cpcookie = teamd_config_path_cookie_get(ctx, "$.link_watch"); - if (cpcookie) { -- teamd_log_dbg("%s: Got link watch from global config.", -+ teamd_log_dbg(ctx, "%s: Got link watch from global config.", - tdport->ifname); - err = link_watch_load_config(ctx, tdport, cpcookie); - if (err) -@@ -380,7 +380,7 @@ static int link_watch_event_watch_port_added(struct teamd_context *ctx, - tdport->ifname); - return err; - } -- teamd_log_dbg("%s: Using implicit link watch.", tdport->ifname); -+ teamd_log_dbg(ctx, "%s: Using implicit link watch.", tdport->ifname); - return link_watch_event_watch_port_added(ctx, tdport, priv); - } - return 0; -diff --git a/teamd/teamd_lw_arp_ping.c b/teamd/teamd_lw_arp_ping.c -index 81806f0..c3d4710 100644 ---- a/teamd/teamd_lw_arp_ping.c -+++ b/teamd/teamd_lw_arp_ping.c -@@ -178,7 +178,7 @@ static int lw_ap_load_options(struct teamd_context *ctx, - * If source_host is not provided, just use address 0.0.0.0 according - * to RFC 5227 (IPv4 Address Conflict Detection). - */ -- teamd_log_dbg("source address \"%s\".", -+ teamd_log_dbg(ctx, "source address \"%s\".", - str_in_addr(&ap_ppriv->src)); - - err = teamd_config_string_get(ctx, &host, "@.target_host", cpcookie); -@@ -189,25 +189,25 @@ static int lw_ap_load_options(struct teamd_context *ctx, - err = set_in_addr(&ap_ppriv->dst, host); - if (err) - return err; -- teamd_log_dbg("target address \"%s\".", str_in_addr(&ap_ppriv->dst)); -+ teamd_log_dbg(ctx, "target address \"%s\".", str_in_addr(&ap_ppriv->dst)); - - err = teamd_config_bool_get(ctx, &ap_ppriv->validate_active, - "@.validate_active", cpcookie); - if (err) - ap_ppriv->validate_active = false; -- teamd_log_dbg("validate_active \"%d\".", ap_ppriv->validate_active); -+ teamd_log_dbg(ctx, "validate_active \"%d\".", ap_ppriv->validate_active); - - err = teamd_config_bool_get(ctx, &ap_ppriv->validate_inactive, - "@.validate_inactive", cpcookie); - if (err) - ap_ppriv->validate_inactive = false; -- teamd_log_dbg("validate_inactive \"%d\".", ap_ppriv->validate_inactive); -+ teamd_log_dbg(ctx, "validate_inactive \"%d\".", ap_ppriv->validate_inactive); - - err = teamd_config_bool_get(ctx, &ap_ppriv->send_always, - "@.send_always", cpcookie); - if (err) - ap_ppriv->send_always = false; -- teamd_log_dbg("send_always \"%d\".", ap_ppriv->send_always); -+ teamd_log_dbg(ctx, "send_always \"%d\".", ap_ppriv->send_always); - - err = teamd_config_int_get(ctx, &tmp, "@.vlanid", cpcookie); - if (!err) { -@@ -217,7 +217,7 @@ static int lw_ap_load_options(struct teamd_context *ctx, - } - ap_ppriv->vlanid_in_use = true; - ap_ppriv->vlanid = tmp; -- teamd_log_dbg("vlan id \"%u\".", ap_ppriv->vlanid); -+ teamd_log_dbg(ctx, "vlan id \"%u\".", ap_ppriv->vlanid); - } - - return 0; -diff --git a/teamd/teamd_lw_ethtool.c b/teamd/teamd_lw_ethtool.c -index 2010136..b44656e 100644 ---- a/teamd/teamd_lw_ethtool.c -+++ b/teamd/teamd_lw_ethtool.c -@@ -115,7 +115,7 @@ static int lw_ethtool_load_options(struct teamd_context *ctx, - teamd_log_err("\"delay_up\" must not be negative number."); - return -EINVAL; - } -- teamd_log_dbg("delay_up \"%d\".", tmp); -+ teamd_log_dbg(ctx, "delay_up \"%d\".", tmp); - ms_to_timespec(ðtool_ppriv->delay_up, tmp); - } - err = teamd_config_int_get(ctx, &tmp, "@.delay_down", cpcookie); -@@ -124,7 +124,7 @@ static int lw_ethtool_load_options(struct teamd_context *ctx, - teamd_log_err("\"delay_down\" must not be negative number."); - return -EINVAL; - } -- teamd_log_dbg("delay_down \"%d\".", tmp); -+ teamd_log_dbg(ctx, "delay_down \"%d\".", tmp); - ms_to_timespec(ðtool_ppriv->delay_down, tmp); - } - return 0; -diff --git a/teamd/teamd_lw_nsna_ping.c b/teamd/teamd_lw_nsna_ping.c -index 82371c4..9273462 100644 ---- a/teamd/teamd_lw_nsna_ping.c -+++ b/teamd/teamd_lw_nsna_ping.c -@@ -175,7 +175,7 @@ static int lw_nsnap_load_options(struct teamd_context *ctx, - err = set_sockaddr_in6(&nsnap_ppriv->dst, host); - if (err) - return err; -- teamd_log_dbg("target address \"%s\".", -+ teamd_log_dbg(ctx, "target address \"%s\".", - str_sockaddr_in6(&nsnap_ppriv->dst)); - - return 0; -diff --git a/teamd/teamd_lw_psr.c b/teamd/teamd_lw_psr.c -index ad6e56b..b0a41f4 100644 ---- a/teamd/teamd_lw_psr.c -+++ b/teamd/teamd_lw_psr.c -@@ -46,7 +46,7 @@ static int lw_psr_callback_periodic(struct teamd_context *ctx, int events, void - } else { - psr_ppriv->missed++; - if (psr_ppriv->missed > psr_ppriv->missed_max && link_up) { -- teamd_log_dbg("%s: Missed %u replies (max %u).", -+ teamd_log_dbg(ctx, "%s: Missed %u replies (max %u).", - tdport->ifname, psr_ppriv->missed, - psr_ppriv->missed_max); - link_up = false; -@@ -86,7 +86,7 @@ static int lw_psr_load_options(struct teamd_context *ctx, - } else { - tmp = LW_PSR_DEFAULT_INTERVAL; - } -- teamd_log_dbg("interval \"%d\".", tmp); -+ teamd_log_dbg(ctx, "interval \"%d\".", tmp); - ms_to_timespec(&psr_ppriv->interval, tmp); - - err = teamd_config_int_get(ctx, &tmp, "@.init_wait", cpcookie); -@@ -95,7 +95,7 @@ static int lw_psr_load_options(struct teamd_context *ctx, - /* if init_wait is set to 0, use default_init_wait */ - if (err || !tmp) - psr_ppriv->init_wait = lw_psr_default_init_wait; -- teamd_log_dbg("init_wait \"%d\".", timespec_to_ms(&psr_ppriv->init_wait)); -+ teamd_log_dbg(ctx, "init_wait \"%d\".", timespec_to_ms(&psr_ppriv->init_wait)); - - err = teamd_config_int_get(ctx, &tmp, "@.missed_max", cpcookie); - if (!err) { -@@ -106,7 +106,7 @@ static int lw_psr_load_options(struct teamd_context *ctx, - } else { - tmp = LW_PSR_DEFAULT_MISSED_MAX; - } -- teamd_log_dbg("missed_max \"%d\".", tmp); -+ teamd_log_dbg(ctx, "missed_max \"%d\".", tmp); - psr_ppriv->missed_max = tmp; - - return 0; -diff --git a/teamd/teamd_lw_tipc.c b/teamd/teamd_lw_tipc.c -index 6d7277d..e5b51ce 100644 ---- a/teamd/teamd_lw_tipc.c -+++ b/teamd/teamd_lw_tipc.c -@@ -88,8 +88,8 @@ static int lw_tipc_link_state_change(struct teamd_context *ctx, - if (strcmp(link->name, lnr->linkname)) - continue; - link->up = link_up; -- teamd_log_dbg("tipc: link <%s> went %s.", -- lnr->linkname, link_up ? "up" : "down"); -+ teamd_log_dbg(ctx, "tipc: link <%s> went %s.", -+ lnr->linkname, link_up ? "up" : "down"); - check: - path_ok = lw_tipc_topology_check(priv, link->peer); - return teamd_link_watch_check_link_up(ctx, ppriv->tdport, ppriv, -@@ -100,7 +100,7 @@ check: - lnr->linkname); - return -EINVAL; - } -- teamd_log_dbg("tipc: established new link <%s>", lnr->linkname); -+ teamd_log_dbg(ctx, "tipc: established new link <%s>", lnr->linkname); - link = malloc(sizeof(struct tipc_link)); - if (!link) - return -ENOMEM; -@@ -153,7 +153,7 @@ static int lw_tipc_callback_socket(struct teamd_context *ctx, int events, void * - else if (event.event == htonl(TIPC_WITHDRAWN)) - return lw_tipc_link_state_change(ctx, &lnr, tipc_ppriv, false); - tipc_cb_err: -- teamd_log_dbg("tipc: link state event error"); -+ teamd_log_dbg(ctx, "tipc: link state event error"); - return -EINVAL; - } - -@@ -234,7 +234,7 @@ static void lw_tipc_port_removed(struct teamd_context *ctx, - struct lw_tipc_port_priv *tipc_ppriv = priv; - struct tipc_link *link; - -- teamd_log_dbg("tipc port removed\n"); -+ teamd_log_dbg(ctx, "tipc port removed\n"); - teamd_loop_callback_del(ctx, LW_TIPC_TOPSRV_SOCKET, priv); - close(tipc_ppriv->topsrv_sock); - while (!LIST_EMPTY(&tipc_ppriv->links)) { -diff --git a/teamd/teamd_per_port.c b/teamd/teamd_per_port.c -index 2882ed2..327aefb 100644 ---- a/teamd/teamd_per_port.c -+++ b/teamd/teamd_per_port.c -@@ -340,7 +340,7 @@ int teamd_port_add_ifname(struct teamd_context *ctx, const char *port_name) - uint32_t ifindex; - - ifindex = team_ifname2ifindex(ctx->th, port_name); -- teamd_log_dbg("%s: Adding port (found ifindex \"%d\").", -+ teamd_log_dbg(ctx, "%s: Adding port (found ifindex \"%d\").", - port_name, ifindex); - return team_port_add(ctx->th, ifindex); - } -@@ -350,7 +350,7 @@ static int teamd_port_remove(struct teamd_context *ctx, - { - int err; - -- teamd_log_dbg("%s: Removing port (found ifindex \"%d\").", -+ teamd_log_dbg(ctx, "%s: Removing port (found ifindex \"%d\").", - tdport->ifname, tdport->ifindex); - err = team_port_remove(ctx->th, tdport->ifindex); - if (err) -@@ -440,7 +440,7 @@ int teamd_port_check_enable(struct teamd_context *ctx, - else - return 0; - -- teamd_log_dbg("%s: %s port", tdport->ifname, -+ teamd_log_dbg(ctx, "%s: %s port", tdport->ifname, - new_enabled_state ? "Enabling": "Disabling"); - err = team_set_port_enabled(ctx->th, tdport->ifindex, - new_enabled_state); -diff --git a/teamd/teamd_runner_activebackup.c b/teamd/teamd_runner_activebackup.c -index f92d341..35b39a3 100644 ---- a/teamd/teamd_runner_activebackup.c -+++ b/teamd/teamd_runner_activebackup.c -@@ -255,7 +255,7 @@ static int ab_clear_active_port(struct teamd_context *ctx, struct ab *ab, - ab->active_ifindex = 0; - if (!tdport || !teamd_port_present(ctx, tdport)) - return 0; -- teamd_log_dbg("Clearing active port \"%s\".", tdport->ifname); -+ teamd_log_dbg(ctx, "Clearing active port \"%s\".", tdport->ifname); - - err = team_set_port_enabled(ctx->th, tdport->ifindex, false); - if (err) { -@@ -368,7 +368,7 @@ static int ab_link_watch_handler(struct teamd_context *ctx, struct ab *ab) - - active_tdport = teamd_get_port(ctx, ab->active_ifindex); - if (active_tdport) { -- teamd_log_dbg("Current active port: \"%s\" (ifindex \"%d\", prio \"%d\").", -+ teamd_log_dbg(ctx, "Current active port: \"%s\" (ifindex \"%d\", prio \"%d\").", - active_tdport->ifname, active_tdport->ifindex, - teamd_port_prio(ctx, active_tdport)); - -@@ -404,7 +404,7 @@ static int ab_link_watch_handler(struct teamd_context *ctx, struct ab *ab) - if (!best.tdport || best.tdport == active_tdport) - return 0; - -- teamd_log_dbg("Found best port: \"%s\" (ifindex \"%d\", prio \"%d\").", -+ teamd_log_dbg(ctx, "Found best port: \"%s\" (ifindex \"%d\", prio \"%d\").", - best.tdport->ifname, best.tdport->ifindex, best.prio); - - if (!active_tdport || !ab_is_port_sticky(ab, active_tdport)) { -@@ -459,7 +459,7 @@ static int ab_port_load_config(struct teamd_context *ctx, - "$.ports.%s.sticky", port_name); - if (err) - ab_port->cfg.sticky = AB_DFLT_PORT_STICKY; -- teamd_log_dbg("%s: Using sticky \"%d\".", port_name, -+ teamd_log_dbg(ctx, "%s: Using sticky \"%d\".", port_name, - ab_port->cfg.sticky); - return 0; - } -@@ -558,7 +558,7 @@ static int ab_load_config(struct teamd_context *ctx, struct ab *ab) - hwaddr_policy_name); - return err; - } -- teamd_log_dbg("Using hwaddr_policy \"%s\".", ab->hwaddr_policy->name); -+ teamd_log_dbg(ctx, "Using hwaddr_policy \"%s\".", ab->hwaddr_policy->name); - return 0; - } - -diff --git a/teamd/teamd_runner_lacp.c b/teamd/teamd_runner_lacp.c -index d292d69..7d940b3 100644 ---- a/teamd/teamd_runner_lacp.c -+++ b/teamd/teamd_runner_lacp.c -@@ -254,7 +254,7 @@ static int lacp_load_config(struct teamd_context *ctx, struct lacp *lacp) - err = teamd_config_bool_get(ctx, &lacp->cfg.active, "$.runner.active"); - if (err) - lacp->cfg.active = LACP_CFG_DFLT_ACTIVE; -- teamd_log_dbg("Using active \"%d\".", lacp->cfg.active); -+ teamd_log_dbg(ctx, "Using active \"%d\".", lacp->cfg.active); - - err = teamd_config_int_get(ctx, &tmp, "$.runner.sys_prio"); - if (err) { -@@ -265,12 +265,12 @@ static int lacp_load_config(struct teamd_context *ctx, struct lacp *lacp) - } else { - lacp->cfg.sys_prio = tmp; - } -- teamd_log_dbg("Using sys_prio \"%d\".", lacp->cfg.sys_prio); -+ teamd_log_dbg(ctx, "Using sys_prio \"%d\".", lacp->cfg.sys_prio); - - err = teamd_config_bool_get(ctx, &lacp->cfg.fast_rate, "$.runner.fast_rate"); - if (err) - lacp->cfg.fast_rate = LACP_CFG_DFLT_FAST_RATE; -- teamd_log_dbg("Using fast_rate \"%d\".", lacp->cfg.fast_rate); -+ teamd_log_dbg(ctx, "Using fast_rate \"%d\".", lacp->cfg.fast_rate); - - err = teamd_config_int_get(ctx, &tmp, "$.runner.min_ports"); - if (err) { -@@ -281,7 +281,7 @@ static int lacp_load_config(struct teamd_context *ctx, struct lacp *lacp) - } else { - lacp->cfg.min_ports = tmp; - } -- teamd_log_dbg("Using min_ports \"%d\".", lacp->cfg.min_ports); -+ teamd_log_dbg(ctx, "Using min_ports \"%d\".", lacp->cfg.min_ports); - - err = teamd_config_string_get(ctx, &agg_select_policy_name, "$.runner.agg_select_policy"); - if (err) -@@ -292,7 +292,7 @@ static int lacp_load_config(struct teamd_context *ctx, struct lacp *lacp) - agg_select_policy_name); - return err; - } -- teamd_log_dbg("Using agg_select_policy \"%s\".", -+ teamd_log_dbg(ctx, "Using agg_select_policy \"%s\".", - lacp_get_agg_select_policy_name(lacp)); - return 0; - } -@@ -634,7 +634,7 @@ static void lacp_switch_agg_lead(struct lacp_port *agg_lead, - struct teamd_port *tdport; - struct lacp_port *lacp_port; - -- teamd_log_dbg("Renaming aggregator %u to %u", -+ teamd_log_dbg(new_agg_lead->ctx, "Renaming aggregator %u to %u", - lacp_agg_id(agg_lead), lacp_agg_id(new_agg_lead)); - if (lacp->selected_agg_lead == agg_lead) - lacp->selected_agg_lead = new_agg_lead; -@@ -649,12 +649,12 @@ static void lacp_port_agg_select(struct lacp_port *lacp_port) - { - struct lacp_port *agg_lead; - -- teamd_log_dbg("%s: Selecting LACP port", lacp_port->tdport->ifname); -+ teamd_log_dbg(lacp_port->ctx, "%s: Selecting LACP port", lacp_port->tdport->ifname); - agg_lead = lacp_get_agg_lead(lacp_port); - lacp_port->agg_lead = agg_lead; - if (lacp_port_better(lacp_port, agg_lead)) - lacp_switch_agg_lead(agg_lead, lacp_port); -- teamd_log_dbg("%s: LACP port selected into aggregator %u", -+ teamd_log_dbg(lacp_port->ctx, "%s: LACP port selected into aggregator %u", - lacp_port->tdport->ifname, lacp_port_agg_id(lacp_port)); - } - -@@ -677,8 +677,8 @@ static void lacp_port_agg_unselect(struct lacp_port *lacp_port) - { - struct lacp_port *agg_lead = lacp_port->agg_lead; - -- teamd_log_dbg("%s: Unselecting LACP port", lacp_port->tdport->ifname); -- teamd_log_dbg("%s: LACP port unselected from aggregator %u", -+ teamd_log_dbg(lacp_port->ctx, "%s: Unselecting LACP port", lacp_port->tdport->ifname); -+ teamd_log_dbg(lacp_port->ctx, "%s: LACP port unselected from aggregator %u", - lacp_port->tdport->ifname, lacp_port_agg_id(lacp_port)); - lacp_port->agg_lead = NULL; - if (lacp_port == agg_lead) { -@@ -715,7 +715,7 @@ static int lacp_selected_agg_update(struct lacp *lacp, - if (!next_agg_lead) - next_agg_lead = lacp_get_next_agg(lacp); - if (lacp->selected_agg_lead != next_agg_lead) -- teamd_log_dbg("Selecting aggregator %u", -+ teamd_log_dbg(lacp->ctx, "Selecting aggregator %u", - lacp_agg_id(next_agg_lead)); - lacp->selected_agg_lead = next_agg_lead; - -@@ -827,7 +827,7 @@ static int lacp_port_periodic_set(struct lacp_port *lacp_port) - int fast_on; - - fast_on = lacp_port->partner.state & INFO_STATE_LACP_TIMEOUT; -- teamd_log_dbg("%s: Setting periodic timer to \"%s\".", -+ teamd_log_dbg(lacp_port->ctx, "%s: Setting periodic timer to \"%s\".", - lacp_port->tdport->ifname, fast_on ? "fast": "slow"); - ms = fast_on ? LACP_PERIODIC_SHORT: LACP_PERIODIC_LONG; - ms_to_timespec(&ts, ms); -@@ -929,8 +929,8 @@ static void lacp_port_actor_update(struct lacp_port *lacp_port) - state |= INFO_STATE_DEFAULTED; - if (teamd_port_count(lacp_port->ctx) > 0) - state |= INFO_STATE_AGGREGATION; -- teamd_log_dbg("%s: lacp info state: 0x%02X.", lacp_port->tdport->ifname, -- state); -+ teamd_log_dbg(lacp_port->ctx, "%s: lacp info state: 0x%02X.", -+ lacp_port->tdport->ifname, state); - lacp_port->actor.state = state; - } - -@@ -1198,7 +1198,7 @@ static int lacp_port_load_config(struct teamd_context *ctx, - } else { - lacp_port->cfg.lacp_prio = tmp; - } -- teamd_log_dbg("%s: Using lacp_prio \"%d\".", port_name, -+ teamd_log_dbg(ctx, "%s: Using lacp_prio \"%d\".", port_name, - lacp_port->cfg.lacp_prio); - - err = teamd_config_int_get(ctx, &tmp, -@@ -1212,14 +1212,14 @@ static int lacp_port_load_config(struct teamd_context *ctx, - } else { - lacp_port->cfg.lacp_key = tmp; - } -- teamd_log_dbg("%s: Using lacp_key \"%d\".", port_name, -+ teamd_log_dbg(ctx, "%s: Using lacp_key \"%d\".", port_name, - lacp_port->cfg.lacp_key); - - err = teamd_config_bool_get(ctx, &lacp_port->cfg.sticky, - "$.ports.%s.sticky", port_name); - if (err) - lacp_port->cfg.sticky = LACP_PORT_CFG_DFLT_STICKY; -- teamd_log_dbg("%s: Using sticky \"%d\".", port_name, -+ teamd_log_dbg(ctx, "%s: Using sticky \"%d\".", port_name, - lacp_port->cfg.sticky); - return 0; - } -diff --git a/teamd/teamd_usock.c b/teamd/teamd_usock.c -index c421c7a..1adfdf8 100644 ---- a/teamd/teamd_usock.c -+++ b/teamd/teamd_usock.c -@@ -171,28 +171,28 @@ static int process_rcv_msg(struct teamd_context *ctx, int sock, char *rcv_msg) - - str = teamd_usock_msg_getline(&rest); - if (!str) { -- teamd_log_dbg("usock: Incomplete message."); -+ teamd_log_dbg(ctx, "usock: Incomplete message."); - return 0; - } - if (strcmp(TEAMD_USOCK_REQUEST_PREFIX, str)) { -- teamd_log_dbg("usock: Unsupported message type."); -+ teamd_log_dbg(ctx, "usock: Unsupported message type."); - return 0; - } - - str = teamd_usock_msg_getline(&rest); - if (!str) { -- teamd_log_dbg("usock: Incomplete message."); -+ teamd_log_dbg(ctx, "usock: Incomplete message."); - return 0; - } - if (!teamd_ctl_method_exists(str)) { -- teamd_log_dbg("usock: Unknown method \"%s\".", str); -+ teamd_log_dbg(ctx, "usock: Unknown method \"%s\".", str); - return 0; - } - - usock_ops_priv.sock = sock; - usock_ops_priv.rcv_msg_args = rest; - -- teamd_log_dbg("usock: calling method \"%s\"", str); -+ teamd_log_dbg(ctx, "usock: calling method \"%s\"", str); - - return teamd_ctl_method_call(ctx, str, &teamd_usock_ctl_method_ops, - &usock_ops_priv); -@@ -315,7 +315,7 @@ static int teamd_usock_sock_open(struct teamd_context *ctx) - teamd_usock_get_sockpath(addr.sun_path, sizeof(addr.sun_path), - ctx->team_devname); - -- teamd_log_dbg("usock: Using sockpath \"%s\"", addr.sun_path); -+ teamd_log_dbg(ctx, "usock: Using sockpath \"%s\"", addr.sun_path); - err = unlink(addr.sun_path); - if (err == -1 && errno != ENOENT) { - teamd_log_err("usock: Failed to remove socket file."); -diff --git a/teamd/teamd_zmq.c b/teamd/teamd_zmq.c -index c39e38d..3f3c2f6 100644 ---- a/teamd/teamd_zmq.c -+++ b/teamd/teamd_zmq.c -@@ -138,28 +138,28 @@ static int process_rcv_msg(struct teamd_context *ctx, char *rcv_msg) - - str = teamd_zmq_msg_getline(&rest); - if (!str) { -- teamd_log_dbg("zmq: Incomplete message."); -+ teamd_log_dbg(ctx, "zmq: Incomplete message."); - return 0; - } - if (strcmp(TEAMD_ZMQ_REQUEST_PREFIX, str)) { -- teamd_log_dbg("zmq: Unsupported message type."); -+ teamd_log_dbg(ctx, "zmq: Unsupported message type."); - return 0; - } - - str = teamd_zmq_msg_getline(&rest); - if (!str) { -- teamd_log_dbg("zmq: Incomplete message."); -+ teamd_log_dbg(ctx, "zmq: Incomplete message."); - return 0; - } - if (!teamd_ctl_method_exists(str)) { -- teamd_log_dbg("zmq: Unknown method \"%s\".", str); -+ teamd_log_dbg(ctx, "zmq: Unknown method \"%s\".", str); - return 0; - } - - zmq_ops_priv.sock = ctx->zmq.sock; - zmq_ops_priv.rcv_msg_args = rest; - -- teamd_log_dbg("zmq: calling method \"%s\"", str); -+ teamd_log_dbg(ctx, "zmq: calling method \"%s\"", str); - - return teamd_ctl_method_call(ctx, str, &teamd_zmq_ctl_method_ops, - &zmq_ops_priv); --- -2.1.0 - diff --git a/SOURCES/libteam-man-teamd.conf-update-some-parameter-default-values.patch b/SOURCES/libteam-man-teamd.conf-update-some-parameter-default-values.patch deleted file mode 100644 index 0af662e..0000000 --- a/SOURCES/libteam-man-teamd.conf-update-some-parameter-default-values.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 337bae54278a112bab9d99e05ee7ec825b12c646 Mon Sep 17 00:00:00 2001 -Message-Id: <337bae54278a112bab9d99e05ee7ec825b12c646.1566966529.git.lucien.xin@gmail.com> -From: Hangbin Liu -Date: Wed, 24 Jul 2019 17:02:21 +0800 -Subject: [PATCH] man teamd.conf: update some parameter default values - -Update default runner.name to roundrobin, default runner.tx_hash array -to ["eth", "ipv4", "ipv6"], default runner.fast_rate to false. - -Signed-off-by: Hangbin Liu -Signed-off-by: Jiri Pirko ---- - man/teamd.conf.5 | 12 ++++++++++++ - 1 file changed, 12 insertions(+) - -diff --git a/man/teamd.conf.5 b/man/teamd.conf.5 -index 9090b4a..350ffc9 100644 ---- a/man/teamd.conf.5 -+++ b/man/teamd.conf.5 -@@ -42,6 +42,9 @@ To do passive load balancing, runner only sets up BPF hash function which will d - .PP - .BR "lacp "\(em - Implements 802.3ad LACP protocol. Can use same Tx port selection possibilities as loadbalance runner. -+.PP -+Default: -+.BR "roundrobin" - .RE - .TP - .BR "notify_peers.count " (int) -@@ -182,6 +185,10 @@ Uses source and destination SCTP ports. - .PP - .BR "l4 "\(em - Uses source and destination TCP and UDP and SCTP ports. -+.PP -+Default: -+.B -+["eth", "ipv4", "ipv6"] - .RE - .TP - .BR "runner.tx_balancer.name " (string) -@@ -217,6 +224,11 @@ Default: - Option specifies the rate at which our link partner is asked to transmit LACPDU packets. If this is - .BR "true" - then packets will be sent once per second. Otherwise they will be sent every 30 seconds. -+.RS 7 -+.PP -+Default: -+.BR "false" -+.RE - .TP - .BR "runner.tx_hash " (array) - Same as for load balance runner. --- -2.18.1 - diff --git a/SOURCES/libteam-teamd-fix-build-error-in-expansion-of-macro-teamd_lo.patch b/SOURCES/libteam-teamd-fix-build-error-in-expansion-of-macro-teamd_lo.patch deleted file mode 100644 index dc2d589..0000000 --- a/SOURCES/libteam-teamd-fix-build-error-in-expansion-of-macro-teamd_lo.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 575edc0dbc7ae3dfa34e30c1496c3504eacbf56e Mon Sep 17 00:00:00 2001 -Message-Id: <575edc0dbc7ae3dfa34e30c1496c3504eacbf56e.1588051704.git.lucien.xin@gmail.com> -In-Reply-To: -References: -From: Hangbin Liu -Date: Thu, 12 Dec 2019 14:22:21 +0800 -Subject: [PATCH 3/4] teamd: fix build error in expansion of macro - teamd_log_dbgx - -With gcc 8.3 I got the following build error: - -In file included from teamd_dbus.c:33: -teamd_dbus.c: In function 'teamd_dbus_init': -teamd.h:54:2: error: expected expression before 'if' - if (val <= ctx->debug) \ - ^~ -teamd.h:57:37: note: in expansion of macro 'teamd_log_dbgx' - #define teamd_log_dbg(ctx, args...) teamd_log_dbgx(ctx, 1, ##args) - ^~~~~~~~~~~~~~ -teamd_dbus.c:507:2: note: in expansion of macro 'teamd_log_dbg' - teamd_log_dbg(ctx, "dbus: connected to %s with name %s", id, - ^~~~~~~~~~~~~ - -Fix it by adding parentheses and braces around the content. - -Fixes: f32310b9a5cc ("libteam: wapper teamd_log_dbg with teamd_log_dbgx") -Signed-off-by: Hangbin Liu -Signed-off-by: Jiri Pirko ---- - teamd/teamd.h | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/teamd/teamd.h b/teamd/teamd.h -index 469b769..fb2872e 100644 ---- a/teamd/teamd.h -+++ b/teamd/teamd.h -@@ -51,8 +51,7 @@ - #define teamd_log_info(args...) daemon_log(LOG_INFO, ##args) - - #define teamd_log_dbgx(ctx, val, args...) \ -- if (val <= ctx->debug) \ -- daemon_log(LOG_DEBUG, ##args) -+ ({ if (val <= ctx->debug) daemon_log(LOG_DEBUG, ##args); }) - - #define teamd_log_dbg(ctx, args...) teamd_log_dbgx(ctx, 1, ##args) - --- -2.1.0 - diff --git a/SOURCES/libteam-teamd-fix-ctx-hwaddr-value-assignment.patch b/SOURCES/libteam-teamd-fix-ctx-hwaddr-value-assignment.patch deleted file mode 100644 index ae65d3d..0000000 --- a/SOURCES/libteam-teamd-fix-ctx-hwaddr-value-assignment.patch +++ /dev/null @@ -1,35 +0,0 @@ -From bbffa4223299c18e9886e423f80909b560713e5e Mon Sep 17 00:00:00 2001 -Message-Id: -From: Hangbin Liu -Date: Thu, 21 May 2020 19:45:22 +0800 -Subject: [PATCH] teamd: fix ctx->hwaddr value assignment - -We should use memcpy to copy the data to ctx->hwaddr. -Use ctx->hwaddr = hwaddr will change the ctx->hwaddr to -a wrong address and cause the team hwaddr unable to be updated. - -Reported-by: Li Liang -Suggested-by: Xin Long -Fixes: 9ca6bf9 ("teamd: update ctx->hwaddr after setting team dev to new hwaddr") -Signed-off-by: Hangbin Liu -Signed-off-by: Jiri Pirko ---- - teamd/teamd.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/teamd/teamd.c b/teamd/teamd.c -index f955b19..9360cbf 100644 ---- a/teamd/teamd.c -+++ b/teamd/teamd.c -@@ -896,7 +896,7 @@ static int teamd_hwaddr_check_change(struct teamd_context *ctx, - teamd_log_err("Failed to set team device hardware address."); - return err; - } -- ctx->hwaddr = hwaddr; -+ memcpy(ctx->hwaddr, hwaddr, hwaddr_len); - ctx->hwaddr_len = hwaddr_len; - return 0; - } --- -2.18.1 - diff --git a/SOURCES/libteam-teamd-lacp-fix-segfault-due-to-NULL-pointer-derefere.patch b/SOURCES/libteam-teamd-lacp-fix-segfault-due-to-NULL-pointer-derefere.patch deleted file mode 100644 index 738be43..0000000 --- a/SOURCES/libteam-teamd-lacp-fix-segfault-due-to-NULL-pointer-derefere.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 4990a8cea7e9111cffe3842058942099a009ed62 Mon Sep 17 00:00:00 2001 -Message-Id: <4990a8cea7e9111cffe3842058942099a009ed62.1588051704.git.lucien.xin@gmail.com> -In-Reply-To: -References: -From: Hangbin Liu -Date: Fri, 13 Dec 2019 22:17:14 +0800 -Subject: [PATCH 4/4] teamd/lacp: fix segfault due to NULL pointer dereference - -If we set a team0 link down with lacp mode, we will call like - - - lacp_port_agg_unselect() - - lacp_switch_agg_lead() - - teamd_log_dbg() - -while the new_agg_lead in lacp_switch_agg_lead() may be NULL, then we -will got NULL pointer dereference as we called new_agg_lead->ctx in -new teamd_log_dbg(). - -Fix it by using agg_lead->ctx, which is safe as we referenced it in function -lacp_switch_agg_lead(). - -Fixes: f32310b9a5cc ("libteam: wapper teamd_log_dbg with teamd_log_dbgx") -Signed-off-by: Hangbin Liu -Signed-off-by: Jiri Pirko ---- - teamd/teamd_runner_lacp.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/teamd/teamd_runner_lacp.c b/teamd/teamd_runner_lacp.c -index 7d940b3..ec01237 100644 ---- a/teamd/teamd_runner_lacp.c -+++ b/teamd/teamd_runner_lacp.c -@@ -634,7 +634,7 @@ static void lacp_switch_agg_lead(struct lacp_port *agg_lead, - struct teamd_port *tdport; - struct lacp_port *lacp_port; - -- teamd_log_dbg(new_agg_lead->ctx, "Renaming aggregator %u to %u", -+ teamd_log_dbg(agg_lead->ctx, "Renaming aggregator %u to %u", - lacp_agg_id(agg_lead), lacp_agg_id(new_agg_lead)); - if (lacp->selected_agg_lead == agg_lead) - lacp->selected_agg_lead = new_agg_lead; --- -2.1.0 - diff --git a/SOURCES/libteam-teamd-update-ctx-hwaddr-after-setting-team-dev-to-ne.patch b/SOURCES/libteam-teamd-update-ctx-hwaddr-after-setting-team-dev-to-ne.patch deleted file mode 100644 index 7b7a23e..0000000 --- a/SOURCES/libteam-teamd-update-ctx-hwaddr-after-setting-team-dev-to-ne.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 9ca6bf9bad49d1e3f7fa01c719c075f79c184336 Mon Sep 17 00:00:00 2001 -Message-Id: <9ca6bf9bad49d1e3f7fa01c719c075f79c184336.1588051704.git.lucien.xin@gmail.com> -In-Reply-To: -References: -From: Hangbin Liu -Date: Wed, 4 Dec 2019 15:17:11 +0800 -Subject: [PATCH 2/4] teamd: update ctx->hwaddr after setting team dev to new - hwaddr - -When adding the first slave to team dev, the team dev's hwaddr will -be updated to this slave's hwaddr in function: - teamd_event_watch_port_added() - - teamd_hwaddr_check_change(), -But we didn't update the ctx->hwaddr, which is still the team's init hwaddr. - -Later in the following functions: - lacp_port_set_mac() - lb_event_watch_port_added() - ab_hwaddr_policy_same_all_port_added() -they will set the first slave's hwaddr to team's init hwaddr(ctx->hwaddr). - -This will cause that the first slave(most likely the active slave)'s hwaddr -changes to team dev's original hwaddr, and later back to its old hwaddr -again, which would make the LACPDUs have different Actor System IDs. - -Fix it by updating ctx->hwaddr when set ctx->ifindex to new hwaddr. - -Note that teamd_set_hwaddr() doesn't need this fix as it will set -ctx->hwaddr_explicit = true. - -Signed-off-by: Hangbin Liu -Signed-off-by: Jiri Pirko ---- - teamd/teamd.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/teamd/teamd.c b/teamd/teamd.c -index 9744021..e035ac5 100644 ---- a/teamd/teamd.c -+++ b/teamd/teamd.c -@@ -867,7 +867,7 @@ static int teamd_add_ports(struct teamd_context *ctx) - static int teamd_hwaddr_check_change(struct teamd_context *ctx, - struct teamd_port *tdport) - { -- const char *hwaddr; -+ char *hwaddr; - unsigned char hwaddr_len; - int err; - -@@ -885,6 +885,8 @@ static int teamd_hwaddr_check_change(struct teamd_context *ctx, - teamd_log_err("Failed to set team device hardware address."); - return err; - } -+ ctx->hwaddr = hwaddr; -+ ctx->hwaddr_len = hwaddr_len; - return 0; - } - --- -2.1.0 - diff --git a/SPECS/libteam.spec b/SPECS/libteam.spec index e32a38f..ccbd5bb 100644 --- a/SPECS/libteam.spec +++ b/SPECS/libteam.spec @@ -1,17 +1,12 @@ Name: libteam -Version: 1.29 -Release: 5%{?dist} +Version: 1.31 +Release: 2%{?dist} Summary: Library for controlling team network device Group: System Environment/Libraries License: LGPLv2+ URL: http://www.libteam.org Source: http://www.libteam.org/files/libteam-%{version}.tar.gz -Patch1: libteam-man-teamd.conf-update-some-parameter-default-values.patch -Patch2: libteam-libteam-wapper-teamd_log_dbg-with-teamd_log_dbgx.patch -Patch3: libteam-teamd-update-ctx-hwaddr-after-setting-team-dev-to-ne.patch -Patch4: libteam-teamd-fix-build-error-in-expansion-of-macro-teamd_lo.patch -Patch5: libteam-teamd-lacp-fix-segfault-due-to-NULL-pointer-derefere.patch -Patch6: libteam-teamd-fix-ctx-hwaddr-value-assignment.patch +Patch1: libteam-Revert-teamd-Disregard-current-state-when-considerin.patch BuildRequires: jansson-devel BuildRequires: libdaemon-devel BuildRequires: libnl3-devel @@ -170,6 +165,21 @@ cd binding/python %{_sysconfdir}/sysconfig/network-scripts/ifdown-TeamPort %changelog +* Tue Sep 01 2020 Xin Long - 1.31-2 +- Revert "teamd: Disregard current state when considering port enablement" [1874001] +* Thu Jul 30 2020 Xin Long - 1.31-1 +- 1.31 release +- utils/bond2team: remove TYPE in ifcfg file [1858518] +- utils/bond2team: keep delivering config to file if stdout not supplied [1858518] +- teamd/lacp: silence ignore none LACP frames +- Send LACP PDU right after the Actor state has been changed +- Skip setting the same hwaddr to a lag port if not needed +- Make all netlink socket RCVBUF sizes configurable +- Don't return an error when timerfd socket return 0 +- Fix ifinfo_link_with_port race condition with newlink +- teamd: fix possible race in master ifname callback +- 1.30 release +- teamd: Disregard current state when considering port enablement [1851460] * Sat May 23 2020 Xin Long - 1.29-5 - teamd: fix ctx->hwaddr value assignment [1838952] * Mon May 18 2020 Xin Long - 1.29-4