From 9fae62133d90967bafd5c30b230efdb56d4bcb0b Mon Sep 17 00:00:00 2001 From: basebuilder_pel7ppc64bebuilder0 Date: Wed, 16 May 2018 15:13:39 +0200 Subject: [PATCH] libteam package update Signed-off-by: basebuilder_pel7ppc64bebuilder0 --- ...dd-port_hwaddr_changed-for-ab-runner.patch | 159 ++++++++ ...-port_hwaddr_changed-for-lacp-runner.patch | 66 +++ ...dd-port_hwaddr_changed-for-lb-runner.patch | 58 +++ ...cess-lacpdu-before-the-port-ifinfo-i.patch | 48 +++ SPECS/libteam.spec | 380 ++++++++++++++++++ 5 files changed, 711 insertions(+) create mode 100644 SOURCES/libteam-teamd-add-port_hwaddr_changed-for-ab-runner.patch create mode 100644 SOURCES/libteam-teamd-add-port_hwaddr_changed-for-lacp-runner.patch create mode 100644 SOURCES/libteam-teamd-add-port_hwaddr_changed-for-lb-runner.patch create mode 100644 SOURCES/libteam-teamd-do-not-process-lacpdu-before-the-port-ifinfo-i.patch create mode 100644 SPECS/libteam.spec diff --git a/SOURCES/libteam-teamd-add-port_hwaddr_changed-for-ab-runner.patch b/SOURCES/libteam-teamd-add-port_hwaddr_changed-for-ab-runner.patch new file mode 100644 index 00000000..aff497bc --- /dev/null +++ b/SOURCES/libteam-teamd-add-port_hwaddr_changed-for-ab-runner.patch @@ -0,0 +1,159 @@ +From efaa6ae709bb4b59efacb0bb7301be2242b058bc Mon Sep 17 00:00:00 2001 +Message-Id: +From: Xin Long +Date: Fri, 20 Oct 2017 12:35:07 +0800 +Subject: [PATCH 1/3] teamd: add port_hwaddr_changed for ab runner + +This patch to fix an events processing race issue when adding two ports +into one team dev with ab mode with same_all hwaddr policy: + +team0 original hwaddr: 00:00:00:00:00:0a +port1 original hwaddr: 00:00:00:00:00:01 +port2 original hwaddr: 00:00:00:00:00:02 + +There are two sockets in teamd: nl_cli.sock_event for ifinfo updates +and nl_sock_event for ports/options changes. During adding two ports, +the events on these two sockets could be: + +nl_sock_event: + [1] -- [2] -- + +[1]: port1 added event (added by enslaving port1) +[2]: port2 added event (added by enslaving port2) + +nl_cli.sock_event: + [a1] -- [b0] -- [c1] -- [d2] -- [e2] -- [f1] -- + +[a1]: port1 ifinfo event (added by setting port1's master) +[b0]: team0 ifinfo event (added by setting team0's hwaddr) +[c1]: port1 ifinfo event (added by set port1's hwaddr) +[d2]: port2 ifinfo event (added by set port2's master) +[e2]: port2 ifinfo event (added by set port2's hwaddr) +[f1]: port1 ifinfo event (added by set port1's hwaddr) + +teamd can make sure the order for their processing is as above on the +same socket, but not between two sockets. So if these events processing +order is (monitoring team/ports' ifinfo, hwaddr, master): + +[ 1]: team0->ifinfo = 00:00:00:00:00:0a + team0->hwaddr = 00:00:00:00:00:01 + port1->hwaddr = 00:00:00:00:00:0a +[a1]: port1->ifinfo = 00:00:00:00:00:01 + port1->master = team0 +[ 2]: port2->ifinfo = 00:00:00:00:00:02 + port2->hwaddr = 00:00:00:00:00:0a + (team0->ifinfo is not updated, it's still 00:00:00:00:00:0a) +[b0]: team0->ifinfo = 00:00:00:00:00:01 + port1->hwaddr = 00:00:00:00:00:01 + (port2->master is not yet set, port2->hwaddr couldn't be updated) +[c1]: no changes +[d2]: port2->ifinfo = 00:00:00:00:00:0a + port2->master = team0 + (too late !!!) +[e2]: no changes +[f1]: no changes + +Then: +team0 final hwaddr: 00:00:00:00:00:01 +port1 final hwaddr: 00:00:00:00:00:01 +port2 final hwaddr: 00:00:00:00:00:0a <----- issue + +This patch is to add port_hwaddr_changed for ab runner, in [e2] where +we set it's hwaddr with team0 (port2->hwaddr = 00:00:00:00:00:01) IF +port2->hwaddr != team0->ifinfo. + +I think the same issue also exists in lacp and lb mode for which I will +fix them in another patches. + +v1 -> v2: + fix some typos in changelog and couple of style problems in codes + +Reported-by: Jon Nikolakakis +Signed-off-by: Xin Long +Signed-off-by: Jiri Pirko +Signed-off-by: Marcelo Ricardo Leitner +--- + teamd/teamd_runner_activebackup.c | 39 +++++++++++++++++++++++++++++++++++++++ + 1 file changed, 39 insertions(+) + +diff --git a/teamd/teamd_runner_activebackup.c b/teamd/teamd_runner_activebackup.c +index aec3a73d5ff61534c377b935fe0e5bc1f51af79d..8a3447f1a63d71055eb7a8784cbe96381ee2b451 100644 +--- a/teamd/teamd_runner_activebackup.c ++++ b/teamd/teamd_runner_activebackup.c +@@ -39,6 +39,8 @@ struct ab_hwaddr_policy { + const char *name; + int (*hwaddr_changed)(struct teamd_context *ctx, + struct ab *ab); ++ int (*port_hwaddr_changed)(struct teamd_context *ctx, struct ab *ab, ++ struct teamd_port *tdport); + int (*port_added)(struct teamd_context *ctx, struct ab *ab, + struct teamd_port *tdport); + int (*active_set)(struct teamd_context *ctx, struct ab *ab, +@@ -95,6 +97,26 @@ static int ab_hwaddr_policy_same_all_hwaddr_changed(struct teamd_context *ctx, + return 0; + } + ++static int ++ab_hwaddr_policy_same_all_port_hwaddr_changed(struct teamd_context *ctx, ++ struct ab *ab, ++ struct teamd_port *tdport) ++{ ++ int err; ++ ++ if (!memcmp(team_get_ifinfo_hwaddr(tdport->team_ifinfo), ++ ctx->hwaddr, ctx->hwaddr_len)) ++ return 0; ++ ++ err = team_hwaddr_set(ctx->th, tdport->ifindex, ctx->hwaddr, ++ ctx->hwaddr_len); ++ if (err) ++ teamd_log_err("%s: Failed to set port hardware address.", ++ tdport->ifname); ++ ++ return err; ++} ++ + static int ab_hwaddr_policy_same_all_port_added(struct teamd_context *ctx, + struct ab *ab, + struct teamd_port *tdport) +@@ -114,6 +136,7 @@ static int ab_hwaddr_policy_same_all_port_added(struct teamd_context *ctx, + static const struct ab_hwaddr_policy ab_hwaddr_policy_same_all = { + .name = "same_all", + .hwaddr_changed = ab_hwaddr_policy_same_all_hwaddr_changed, ++ .port_hwaddr_changed = ab_hwaddr_policy_same_all_port_hwaddr_changed, + .port_added = ab_hwaddr_policy_same_all_port_added, + }; + +@@ -411,6 +434,21 @@ static int ab_event_watch_hwaddr_changed(struct teamd_context *ctx, void *priv) + return 0; + } + ++static int ab_event_watch_port_hwaddr_changed(struct teamd_context *ctx, ++ struct teamd_port *tdport, ++ void *priv) ++{ ++ struct ab *ab = priv; ++ ++ if (!teamd_port_present(ctx, tdport)) ++ return 0; ++ ++ if (ab->hwaddr_policy->port_hwaddr_changed) ++ return ab->hwaddr_policy->port_hwaddr_changed(ctx, ab, tdport); ++ ++ return 0; ++} ++ + static int ab_port_load_config(struct teamd_context *ctx, + struct ab_port *ab_port) + { +@@ -491,6 +529,7 @@ static int ab_event_watch_prio_option_changed(struct teamd_context *ctx, + + static const struct teamd_event_watch_ops ab_event_watch_ops = { + .hwaddr_changed = ab_event_watch_hwaddr_changed, ++ .port_hwaddr_changed = ab_event_watch_port_hwaddr_changed, + .port_added = ab_event_watch_port_added, + .port_link_changed = ab_event_watch_port_link_changed, + .option_changed = ab_event_watch_prio_option_changed, +-- +2.14.3 + diff --git a/SOURCES/libteam-teamd-add-port_hwaddr_changed-for-lacp-runner.patch b/SOURCES/libteam-teamd-add-port_hwaddr_changed-for-lacp-runner.patch new file mode 100644 index 00000000..4c77bf37 --- /dev/null +++ b/SOURCES/libteam-teamd-add-port_hwaddr_changed-for-lacp-runner.patch @@ -0,0 +1,66 @@ +From c42cc9955a93bc4bed65adf9a506f92b8df290d7 Mon Sep 17 00:00:00 2001 +Message-Id: +In-Reply-To: +References: +From: Xin Long +Date: Tue, 7 Nov 2017 12:33:36 +0800 +Subject: [PATCH 3/3] 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 +Signed-off-by: Jiri Pirko +Signed-off-by: Marcelo Ricardo Leitner +--- + teamd/teamd_runner_lacp.c | 26 ++++++++++++++++++++++++++ + 1 file changed, 26 insertions(+) + +diff --git a/teamd/teamd_runner_lacp.c b/teamd/teamd_runner_lacp.c +index 1310f6737f6cf37b7d6fef0befb8c803178212bd..7b8f0a783cfd71aa3f8a89276f5b95bce2fc517a 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, +-- +2.14.3 + diff --git a/SOURCES/libteam-teamd-add-port_hwaddr_changed-for-lb-runner.patch b/SOURCES/libteam-teamd-add-port_hwaddr_changed-for-lb-runner.patch new file mode 100644 index 00000000..95a11888 --- /dev/null +++ b/SOURCES/libteam-teamd-add-port_hwaddr_changed-for-lb-runner.patch @@ -0,0 +1,58 @@ +From 0164b6a460728b3a1fd3feee9e2901f1b810cf24 Mon Sep 17 00:00:00 2001 +Message-Id: <0164b6a460728b3a1fd3feee9e2901f1b810cf24.1518205291.git.mleitner@redhat.com> +In-Reply-To: +References: +From: Xin Long +Date: Tue, 7 Nov 2017 12:33:11 +0800 +Subject: [PATCH 2/3] teamd: add port_hwaddr_changed for lb runner + +To fix the same issue fixed in commit efaa6ae709bb ("teamd: add +port_hwaddr_changed for ab runner") for lb runner, this patch is +to add .port_hwaddr_changed for lb runner as well. + +Signed-off-by: Xin Long +Signed-off-by: Jiri Pirko +Signed-off-by: Marcelo Ricardo Leitner +--- + teamd/teamd_runner_loadbalance.c | 23 +++++++++++++++++++++++ + 1 file changed, 23 insertions(+) + +diff --git a/teamd/teamd_runner_loadbalance.c b/teamd/teamd_runner_loadbalance.c +index a1e21303455fde55763b57b898ac5aaeb21c4b61..b9bfc13895b1a47d3e5cf552e6c720601c475d97 100644 +--- a/teamd/teamd_runner_loadbalance.c ++++ b/teamd/teamd_runner_loadbalance.c +@@ -87,8 +87,31 @@ static int lb_event_watch_hwaddr_changed(struct teamd_context *ctx, void *priv) + return 0; + } + ++static int lb_event_watch_port_hwaddr_changed(struct teamd_context *ctx, ++ struct teamd_port *tdport, ++ void *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 = team_hwaddr_set(ctx->th, tdport->ifindex, ctx->hwaddr, ++ ctx->hwaddr_len); ++ if (err) ++ teamd_log_err("%s: Failed to set port hardware address.", ++ tdport->ifname); ++ ++ return err; ++} ++ + static const struct teamd_event_watch_ops lb_port_watch_ops = { + .hwaddr_changed = lb_event_watch_hwaddr_changed, ++ .port_hwaddr_changed = lb_event_watch_port_hwaddr_changed, + .port_added = lb_event_watch_port_added, + .port_removed = lb_event_watch_port_removed, + .port_link_changed = lb_event_watch_port_link_changed, +-- +2.14.3 + diff --git a/SOURCES/libteam-teamd-do-not-process-lacpdu-before-the-port-ifinfo-i.patch b/SOURCES/libteam-teamd-do-not-process-lacpdu-before-the-port-ifinfo-i.patch new file mode 100644 index 00000000..1c24d0e1 --- /dev/null +++ b/SOURCES/libteam-teamd-do-not-process-lacpdu-before-the-port-ifinfo-i.patch @@ -0,0 +1,48 @@ +From 45912ded9cb5166d8286a6a4fb53bfe9fffcd8a9 Mon Sep 17 00:00:00 2001 +Message-Id: <45912ded9cb5166d8286a6a4fb53bfe9fffcd8a9.1518009078.git.mleitner@redhat.com> +From: Xin Long +Date: Wed, 11 Oct 2017 14:17:38 +0800 +Subject: [PATCH] teamd: do not process lacpdu before the port ifinfo is set + +Now the port ifinfo will be set in obj_input_newlink when a RTM_NEWLINK +event is received. + +But when a port is being added, if a lacpdu gets received on this port +before the RTM_NEWLINK event, lacpdu_recv will process the packet with +incorrect port ifinfo. + +In Patrick's case, as ifinfo->master_ifindex was 0, it would skip this +port in teamd_for_each_tdport, which caused lacp_port->agg_lead not to +be updated in lacp_switch_agg_lead. Later the lacp_port actor would go +to a unexpected state. + +This patch is to avoid it by checking teamd_port_present in lacpdu_recv +so that it would not process lacpdu before the port ifinfo is set. + +Reported-by: Patrick Talbert +Tested-by: Patrick Talbert +Signed-off-by: Xin Long +Reviewed-by: Marcelo Ricardo Leitner +Signed-off-by: Jiri Pirko +Signed-off-by: Marcelo Ricardo Leitner +--- + teamd/teamd_runner_lacp.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/teamd/teamd_runner_lacp.c b/teamd/teamd_runner_lacp.c +index 5601278696a9f263f6bfe71642b2db971c9314b9..1310f6737f6cf37b7d6fef0befb8c803178212bd 100644 +--- a/teamd/teamd_runner_lacp.c ++++ b/teamd/teamd_runner_lacp.c +@@ -1075,6 +1075,9 @@ static int lacpdu_recv(struct lacp_port *lacp_port) + if (err <= 0) + return err; + ++ if (!teamd_port_present(lacp_port->ctx, lacp_port->tdport)) ++ return 0; ++ + if (!lacpdu_check(&lacpdu)) { + teamd_log_warn("malformed LACP PDU came."); + return 0; +-- +2.14.3 + diff --git a/SPECS/libteam.spec b/SPECS/libteam.spec new file mode 100644 index 00000000..b09f6ee8 --- /dev/null +++ b/SPECS/libteam.spec @@ -0,0 +1,380 @@ +Name: libteam +Version: 1.27 +Release: 4%{?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-teamd-do-not-process-lacpdu-before-the-port-ifinfo-i.patch +Patch2: libteam-teamd-add-port_hwaddr_changed-for-ab-runner.patch +Patch3: libteam-teamd-add-port_hwaddr_changed-for-lb-runner.patch +Patch4: libteam-teamd-add-port_hwaddr_changed-for-lacp-runner.patch +BuildRequires: jansson-devel +BuildRequires: libdaemon-devel +BuildRequires: libnl3-devel +BuildRequires: python-devel +BuildRequires: dbus-devel +BuildRequires: swig +BuildRequires: doxygen + +%description +This package contains a library which is a user-space +counterpart for team network driver. It provides an API +to control team network devices. + +%package devel +Group: Development/Libraries +Summary: Libraries and header files for libteam development +Requires: libteam = %{version}-%{release} + +%package doc +Group: Documentation +Summary: API documentation for libteam and libteamd +Requires: libteam = %{version}-%{release} + +%package -n teamd +Group: System Environment/Daemons +Summary: Team network device control daemon +Requires: libteam = %{version}-%{release} + +%package -n teamd-devel +Group: Development/Libraries +Summary: Libraries and header files for teamd development +Requires: teamd = %{version}-%{release} + +%package -n python-libteam +Group: Development/Libraries +Summary: Team network device library bindings +Requires: libteam = %{version}-%{release} + +%description devel +The libteam-devel package contains the header files and libraries +necessary for developing programs using libteam. + +%description doc +This package contains libteam and libteamd API documentation + +%description -n teamd +The teamd package contains team network device control daemon. + +%description -n teamd-devel +The teamd-devel package contains the header files and libraries +necessary for developing programs using libteamdctl. + +%description -n python-libteam +The team-python package contains a module that permits applications +written in the Python programming language to use the interface +supplied by team network device library. + +This package should be installed if you want to develop Python +programs that will manipulate team network devices. + +%define _hardened_build 1 + +%prep +%autosetup -p1 + +# prepare example dir for -devel +mkdir -p _tmpdoc1/examples +cp -p examples/*.c _tmpdoc1/examples +# prepare example dir for team-python +mkdir -p _tmpdoc2/examples +cp -p examples/python/*.py _tmpdoc2/examples +chmod -x _tmpdoc2/examples/*.py + +%build +%configure --disable-static +make %{?_smp_mflags} +make html +cd binding/python +python ./setup.py build + +%install +make install DESTDIR=$RPM_BUILD_ROOT INSTALL="install -p" +find $RPM_BUILD_ROOT -name \*.la -delete +rm -rf $RPM_BUILD_ROOT/%{_bindir}/team_* +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/dbus-1/system.d +install -p teamd/dbus/teamd.conf $RPM_BUILD_ROOT%{_sysconfdir}/dbus-1/system.d/ +mkdir -p $RPM_BUILD_ROOT%{_unitdir} +install -p teamd/redhat/systemd/teamd@.service $RPM_BUILD_ROOT%{_unitdir} +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/network-scripts +install -p -m 755 teamd/redhat/initscripts_systemd/network-scripts/ifup-Team $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/network-scripts +install -p -m 755 teamd/redhat/initscripts_systemd/network-scripts/ifdown-Team $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/network-scripts +install -p -m 755 teamd/redhat/initscripts_systemd/network-scripts/ifup-TeamPort $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/network-scripts +install -p -m 755 teamd/redhat/initscripts_systemd/network-scripts/ifdown-TeamPort $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/network-scripts +install -p -m 755 utils/bond2team $RPM_BUILD_ROOT%{_bindir}/bond2team +cd binding/python +python ./setup.py install --root $RPM_BUILD_ROOT -O1 + +%post -p /sbin/ldconfig + +%postun -p /sbin/ldconfig + +%files +%doc COPYING +%{_libdir}/libteam.so.* +%{_bindir}/teamnl +%{_mandir}/man8/teamnl.8* + +%files devel +%doc COPYING _tmpdoc1/examples +%{_includedir}/team.h +%{_libdir}/libteam.so +%{_libdir}/pkgconfig/libteam.pc + +%files doc +%doc COPYING doc/api + +%files -n teamd +%doc COPYING teamd/example_configs teamd/redhat/example_ifcfgs/ +%config(noreplace) %attr(644,root,root) %{_sysconfdir}/dbus-1/system.d/teamd.conf +%config(noreplace) %attr(644,root,root) %{_unitdir}/teamd@.service +%{_sysconfdir}/sysconfig/network-scripts/ifup-Team +%{_sysconfdir}/sysconfig/network-scripts/ifdown-Team +%{_sysconfdir}/sysconfig/network-scripts/ifup-TeamPort +%{_sysconfdir}/sysconfig/network-scripts/ifdown-TeamPort +%{_libdir}/libteamdctl.so.* +%{_bindir}/teamd +%{_bindir}/teamdctl +%{_bindir}/bond2team +%{_mandir}/man8/teamd.8* +%{_mandir}/man8/teamdctl.8* +%{_mandir}/man5/teamd.conf.5* +%{_mandir}/man1/bond2team.1* + +%files -n teamd-devel +%doc COPYING +%{_includedir}/teamdctl.h +%{_libdir}/libteamdctl.so +%{_libdir}/pkgconfig/libteamdctl.pc + +%files -n python-libteam +%doc COPYING _tmpdoc2/examples +%{python_sitearch}/* + +%changelog +* Fri Feb 9 2018 Marcelo Ricardo Leitner - 1.27-4 +- Add port_hwaddr_changed for ab, lb and lacp runners [1499063] + +* Wed Feb 7 2018 Marcelo Ricardo Leitner - 1.27-3 +- Added fix to only process LACPDU after port ifinfo is set [1493600] + +* Mon Aug 21 2017 Xin Long - 1.27-2 +- Updated to 1.27 [1445499 1440866 1486935] + +* Fri Mar 24 2017 Xin Long - 1.25-5 +- Added patch to escape some sensitive characters [1383997] +- Added patch to check port link_up when a port is added for lb runner + [1393430] + +* Wed Aug 17 2016 Marcelo Ricardo Leitner - 1.25-4 +- Added patches to avoid hung on shutdown [1330550] +- Added patch to fix an out-of-bound write with zero-length hardware + address [1286840] + +* Thu Jun 23 2016 Marcelo Ricardo Leitner - 1.25-2 +- Updated to 1.25 [1286840 1286063] +- Added patch teamd-LACP-runner-does-not-set-Agg-bit-on-first-slav.patch [1347818] + +* Wed Jan 20 2016 Marcelo Ricardo Leitner - 1.23-1 +- Updated to 1.23 [1286840 1273052] + +* Fri Dec 11 2015 Marcelo Ricardo Leitner - 1.22-1 +- Updated to 1.22 [1286840] + +* Wed Dec 02 2015 Marcelo Ricardo Leitner - 1.17-6 +- Added patch Fix sending duplicate LACP frames at the start [1267494] + +* Fri Sep 11 2015 Marcelo Ricardo Leitner - 1.17-5 +- Added patch fixing typo on delay_up [1242628] + +* Tue Sep 01 2015 Xin Long - 1.17-4 +- Added patch change actor system value on team mac change in lacp [1253769] + +* Tue Sep 01 2015 Xin Long - 1.17-3 +- Added patch fixing the lack of hwaddr_changed for loadbalance mode [1255458] + +* Fri Aug 28 2015 Marcelo Ricardo Leitner - 1.17-2 +- Added patch fixing select parameter [1257195] + +* Fri Apr 03 2015 Jiri Pirko - 1.17-1 +- rebase to version 1.17 [1208418 1208414 1190102 1166863 1166864 1203611 1206483] + +* Wed Dec 17 2014 Jiri Pirko - 1.15-1 +- rebase to version 1.15 [1116970 1173632] + +* Wed Nov 05 2014 Jiri Pirko - 1.14-1 +- rebase to version 1.14 [1116970] + +* Wed Nov 05 2014 Jiri Pirko - 1.13-1 +- rebase to version 1.13 [1116970 1160615] + +* Wed Aug 20 2014 Jiri Pirko - 1.12-1 +- rebase to version 1.12 [1116970 1125296] + +* Thu Jul 31 2014 Jiri Pirko - 1.11-1 +- rebase to version 1.11 [1116970 1072855 1082522 1082551 1085938 1086383 1089256 1090578 1092549] + +* Mon Mar 31 2014 Jiri Pirko - 1.9-15 +- teamdctl: unmess check_teamd_team_devname and fix double free there [1078099] + +* Fri Mar 28 2014 Jiri Pirko - 1.9-14 +- teamd_link_watch: allow to send ARP probes if no source_host is specified [1078993] +- bond2team: do not guess source_host option [1079059] +- teamd_link_watch: specify "missed_max" option default value [1079059] +- man: correct type of "*_host" options [1078993] + +* Thu Mar 27 2014 Jiri Pirko - 1.9-13 +- teamdctl: add command for easy port presention checking [1081214] +- initscripts: do not try to re-add port if it is already there [1081214] + +* Fri Mar 07 2014 Jiri Pirko - 1.9-12 +- libteamdctl: add notice for caller to do not modify [1072620] + +* Fri Mar 07 2014 Jiri Pirko - 1.9-11 +- usock: accept multiline message string parameters [1051517] + +* Wed Feb 26 2014 Jiri Pirko - 1.9-10 +- fix port handling when "take over" option is on [1070065] + +* Fri Feb 21 2014 Jiri Pirko - 1.9-9 +- spec: remove patch backup files + +* Fri Feb 21 2014 Jiri Pirko - 1.9-8 +- teamd: fixed couple comments [1067851] +- teamd: update hwaddr when changing team's macaddr [1067851] +- redhat: fix boolean types in example 2 [1067851] + +* Wed Feb 12 2014 Jiri Pirko - 1.9-7 +- initscripts: fix port up before master and port down after master [1062675] + +* Mon Feb 03 2014 Jiri Pirko - 1.9-6 +- lb: enable/disable port according to linkwatch state [1057223] + +* Fri Jan 24 2014 Daniel Mach - 1.9-5 +- Mass rebuild 2014-01-24 + +* Thu Jan 23 2014 Jiri Pirko - 1.9-4 +- fix multilib [983267] + +* Tue Jan 21 2014 Jiri Pirko - 1.9-3 +- man teamdctl: Minor improvements to style and language [1055940] +- man teamd.conf: Minor improvements to style and language [1055940] +- fix comment typo in ifdown-Team scripts [1035173] + +* Fri Dec 27 2013 Daniel Mach - 1.9-2 +- Mass rebuild 2013-12-27 + +* Wed Nov 13 2013 Jiri Pirko - 1.9-1 +- Rebase to 1.9 +- libteamdctl: remove false lib dependencies +- teamdctl: use new port config get function +- libteamdctl: introduce support for port config get +- libteamdctl: cache reply strings into list +- teamd: introduce PortConfigDump control method +- teamd: make teamd_get_port_by_ifname ifname argument const +- Minor improvements to style and language. +- do not install example binaries +- minor man page(s) correction(s) and lintianisation +- teamdctl: print error message if ifindex cannot be obtained +- fix cflags path in pc files +Resolves: rhbz#1028138 +Resolves: rhbz#1013640 +Resolves: rhbz#1029186 + +* Tue Aug 13 2013 Jiri Pirko - 1.8-1 +- Rebase to 1.8 + +* Tue Jun 11 2013 Jiri Pirko - 1.3-1 +- Update to 1.3 + +* Wed May 29 2013 Jiri Pirko - 1.2-1 +- Update to 1.2 + +* Thu May 16 2013 Jiri Pirko - 1.1-1 +- Update to 1.1 + +* Thu Jan 31 2013 Jiri Pirko - 1.0-1 +- Update to 1.0 + +* Sun Jan 20 2013 Jiri Pirko - 0.1-27.20130110gitf16805c +- Rebuilt for libnl3 + +* Sun Jan 20 2013 Kalev Lember - 0.1-26.20130110gitf16805c +- Rebuilt for libnl3 + +* Thu Jan 10 2013 Jiri Pirko - 0.1-25.20130110gitf16805c +- Rebase to git commit f16805c + +* Wed Dec 12 2012 Jiri Pirko - 0.1-24.20121212git01fe4bd +- Rebase to git commit 01fe4bd + +* Thu Dec 06 2012 Jiri Pirko - 0.1-23.20121206git659a848 +- Rebase to git commit 659a848 + +* Thu Nov 22 2012 Jiri Pirko - 0.1-22.20121122git18b6701 +- Rebase to git commit 18b6701 + +* Thu Nov 15 2012 Jiri Pirko - 0.1-21.20121115gitffb5267 +- Rebase to git commit ffb5267 + +* Mon Nov 05 2012 Jiri Pirko - 0.1-20.20121105git3b95b34 +- Rebase to git commit 3b95b34 + +* Thu Oct 25 2012 Jiri Pirko - 0.1-19.20121025git7fe7c72 +- Rebase to git commit 7fe7c72 + +* Fri Oct 19 2012 Jiri Pirko - 0.1-18.20121019git1a91059 +- Rebase to git commit 1a91059 + +* Sun Oct 07 2012 Jiri Pirko - 0.1-17.20121007git6f48751 +- Rebase to git commit 6f48751 + +* Tue Sep 25 2012 Jiri Pirko - 0.1-16.20120925gitcc5cddc +- Rebase to git commit cc5cddc + +* Sun Sep 23 2012 Jiri Pirko - 0.1-15.20120923git8448186 +- Rebase to git commit 8448186 + +* Tue Sep 04 2012 Jiri Pirko - 0.1-14.20120904gitbdcf72c +- Rebase to git commit bdcf72c + +* Wed Aug 22 2012 Jiri Pirko - 0.1-13.20120822gitc0d943d +- Rebase to git commit c0d943d + +* Tue Aug 07 2012 Jiri Pirko - 0.1-12.20120807git9fa4a96 +- Rebase to git commit 9fa4a96 + +* Thu Jul 19 2012 Fedora Release Engineering - 0.1-11.20120628gitca7b526 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Thu Jun 28 2012 Jiri Pirko - 0.1-10.20120628gitca7b526 +- Rebase to git commit ca7b526 + +* Wed Jun 27 2012 Jiri Pirko - 0.1-9.20120627git96569f8 +- Rebase to git commit 96569f8 + +* Wed Jun 27 2012 Jiri Pirko - 0.1-8.20120627gitcd6b557 +- Rebase to git commit cd6b557 + +* Wed Jun 20 2012 Jiri Pirko - 0.1-7.20120620gita88fabf +- Rebase to git commit a88fabf + +* Fri May 04 2012 Jiri Pirko - 0.1-6.20120504git11e234a +- Rebase to git commit 11e234a + +* Thu Apr 05 2012 Jiri Pirko - 0.1-5.20120405gita82f8ac +- Rebase to git commit a82f8ac + +* Tue Feb 21 2012 Jiri Pirko - 0.1-4.20120221gitfe97f63 +- Rebase to git commit fe97f63 + +* Mon Jan 30 2012 Jiri Pirko - 0.1-3.20120130gitb5cf2a8 +- Rebase to git commit b5cf2a8 + +* Wed Jan 25 2012 Jiri Pirko - 0.1-2.20120125gita1718f8 +- Rebase to git commit a1718f8 + +* Wed Jan 18 2012 Jiri Pirko - 0.1-1.20120113git302672e +- Initial build.