diff options
author | Xin Long <lucien.xin@gmail.com> | 2017-11-07 12:33:36 +0800 |
---|---|---|
committer | Jiri Pirko <jiri@mellanox.com> | 2017-11-07 07:28:43 +0100 |
commit | c42cc9955a93bc4bed65adf9a506f92b8df290d7 (patch) | |
tree | b944822bab80365230fb995eaa4699fe9df38a33 | |
parent | 0164b6a460728b3a1fd3feee9e2901f1b810cf24 (diff) | |
download | libteam-c42cc9955a93bc4bed65adf9a506f92b8df290d7.tar.gz |
teamd: add port_hwaddr_changed for lacp runner
To fix the same issue fixed in commit efaa6ae709bb ("teamd: add
port_hwaddr_changed for ab runner") for lacp runner, this patch
is to add .port_hwaddr_changed for lacp runner as well.
Signed-off-by: Xin Long <lucien.xin@gmail.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
-rw-r--r-- | teamd/teamd_runner_lacp.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/teamd/teamd_runner_lacp.c b/teamd/teamd_runner_lacp.c index 1310f67..7b8f0a7 100644 --- a/teamd/teamd_runner_lacp.c +++ b/teamd/teamd_runner_lacp.c @@ -1336,6 +1336,31 @@ static int lacp_event_watch_hwaddr_changed(struct teamd_context *ctx, return 0; } +static int lacp_event_watch_port_hwaddr_changed(struct teamd_context *ctx, + struct teamd_port *tdport, + void *priv) +{ + struct lacp_port *lacp_port; + struct lacp *lacp = priv; + int err; + + if (!teamd_port_present(ctx, tdport)) + return 0; + + if (!memcmp(team_get_ifinfo_hwaddr(tdport->team_ifinfo), + ctx->hwaddr, ctx->hwaddr_len)) + return 0; + + err = lacp_port_set_mac(ctx, tdport); + if (err) + return err; + + lacp_port = lacp_port_get(lacp, tdport); + lacp_port_actor_system_update(lacp_port); + + return 0; +} + static int lacp_event_watch_admin_state_changed(struct teamd_context *ctx, void *priv) { @@ -1389,6 +1414,7 @@ static int lacp_event_watch_port_changed(struct teamd_context *ctx, static const struct teamd_event_watch_ops lacp_event_watch_ops = { .hwaddr_changed = lacp_event_watch_hwaddr_changed, + .port_hwaddr_changed = lacp_event_watch_port_hwaddr_changed, .port_added = lacp_event_watch_port_added, .port_removed = lacp_event_watch_port_removed, .port_changed = lacp_event_watch_port_changed, |