import libteam-1.28-2.el8

This commit is contained in:
CentOS Sources 2019-08-01 16:33:36 -04:00 committed by Stepan Oksanichenko
commit c642c5bda7
12 changed files with 1027 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
SOURCES/libteam-1.28.tar.gz

1
.libteam.metadata Normal file
View File

@ -0,0 +1 @@
c3429d0b29ae78dd1d4899dab6fe9f13af26ff7d SOURCES/libteam-1.28.tar.gz

View File

@ -0,0 +1,30 @@
From f36c191da3d65a4744582b2eb09fa297dd85f9ae Mon Sep 17 00:00:00 2001
From: Hangbin Liu <liuhangbin@gmail.com>
Date: Fri, 22 Feb 2019 16:27:46 +0800
Subject: [PATCH 5/6] man: fix runner.min_ports default value
It should be 1 instead of 0.
Reported-by: LiLiang <liali@redhat.com>
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
---
man/teamd.conf.5 | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/man/teamd.conf.5 b/man/teamd.conf.5
index 9bdf46a..5b0f3e9 100644
--- a/man/teamd.conf.5
+++ b/man/teamd.conf.5
@@ -240,7 +240,7 @@ Specifies the minimum number of ports that must be active before asserting carri
.RS 7
.PP
Default:
-.BR "0"
+.BR "1"
.RE
.TP
.BR "runner.agg_select_policy " (string)
--
2.18.1

View File

@ -0,0 +1,68 @@
From c8b356a3cd363af10d71e21a4fb7dc26cf90b5bc Mon Sep 17 00:00:00 2001
From: Hangbin Liu <liuhangbin@gmail.com>
Date: Mon, 7 Jan 2019 15:58:49 +0800
Subject: [PATCH 2/6] teamd: config: update local prio to kernel
Team port's priority will affect the active port selection. Update the
local config is not enough. We also need to update kernel configs.
Reported-by: Liang Li <liali@redhat.com>
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
---
teamd/teamd_config.c | 32 ++++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+)
diff --git a/teamd/teamd_config.c b/teamd/teamd_config.c
index 94158ce..69b25de 100644
--- a/teamd/teamd_config.c
+++ b/teamd/teamd_config.c
@@ -155,6 +155,31 @@ errout:
return err;
}
+static int teamd_config_port_set(struct teamd_context *ctx, const char *port_name,
+ json_t *port_obj)
+{
+ struct teamd_port *tdport;
+ json_t *config;
+ int tmp, err;
+
+ tdport = teamd_get_port_by_ifname(ctx, port_name);
+ if (!tdport)
+ return -ENODEV;
+
+ config = json_object_get(port_obj, "prio");
+ if (json_is_integer(config)) {
+ tmp = json_integer_value(config);
+ err = team_set_port_priority(ctx->th, tdport->ifindex, tmp);
+ if (err) {
+ teamd_log_err("%s: Failed to set \"priority\".",
+ tdport->ifname);
+ return err;
+ }
+ }
+
+ return 0;
+}
+
int teamd_config_port_update(struct teamd_context *ctx, const char *port_name,
const char *json_port_cfg_str)
{
@@ -184,6 +209,13 @@ int teamd_config_port_update(struct teamd_context *ctx, const char *port_name,
if (err)
teamd_log_err("%s: Failed to update existing config "
"port object", port_name);
+ else {
+ err = teamd_config_port_set(ctx, port_name, port_new_obj);
+ if (err)
+ teamd_log_err("%s: Failed to update config to kernel",
+ port_name);
+ }
+
new_port_decref:
json_decref(port_new_obj);
return err;
--
2.18.1

View File

@ -0,0 +1,74 @@
From 54f137c10579bf97800c61ebb13e732aa1d843e6 Mon Sep 17 00:00:00 2001
From: Hangbin Liu <liuhangbin@gmail.com>
Date: Fri, 8 Mar 2019 19:28:55 +0800
Subject: [PATCH 6/6] teamd: lacp: update port state according to partner's
sync bit
According to 6.4.15 of IEEE 802.1AX-2014, Figure 6-22, the state that the
port is selected moves MUX state from DETACHED to ATTACHED.
But ATTACHED state does not mean that the port can send and receive user
frames. COLLECTING_DISTRIBUTION state is the state that the port can send
and receive user frames. To move MUX state from ATTACHED to
COLLECTING_DISTRIBUTION, the partner state should be sync as well as the
port selected.
In function lacp_port_actor_update(), only INFO_STATE_SYNCHRONIZATION
should be set to the actor.state when the port is selected.
INFO_STATE_COLLECTING and INFO_STATE_DISTRIBUTING should be set to false
with ATTACHED mode and set to true when INFO_STATE_SYNCHRONIZATION of
partner.state is set.
In function lacp_port_should_be_{enabled, disabled}(), we also need to
check the INFO_STATE_SYNCHRONIZATION bit of partner.state.
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
---
teamd/teamd_runner_lacp.c | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/teamd/teamd_runner_lacp.c b/teamd/teamd_runner_lacp.c
index 555aa06..d292d69 100644
--- a/teamd/teamd_runner_lacp.c
+++ b/teamd/teamd_runner_lacp.c
@@ -333,7 +333,8 @@ static int lacp_port_should_be_enabled(struct lacp_port *lacp_port)
struct lacp *lacp = lacp_port->lacp;
if (lacp_port_selected(lacp_port) &&
- lacp_port->agg_lead == lacp->selected_agg_lead)
+ lacp_port->agg_lead == lacp->selected_agg_lead &&
+ lacp_port->partner.state & INFO_STATE_SYNCHRONIZATION)
return true;
return false;
}
@@ -343,7 +344,8 @@ static int lacp_port_should_be_disabled(struct lacp_port *lacp_port)
struct lacp *lacp = lacp_port->lacp;
if (!lacp_port_selected(lacp_port) ||
- lacp_port->agg_lead != lacp->selected_agg_lead)
+ lacp_port->agg_lead != lacp->selected_agg_lead ||
+ !(lacp_port->partner.state & INFO_STATE_SYNCHRONIZATION))
return true;
return false;
}
@@ -914,9 +916,13 @@ static void lacp_port_actor_update(struct lacp_port *lacp_port)
if (lacp_port->lacp->cfg.fast_rate)
state |= INFO_STATE_LACP_TIMEOUT;
if (lacp_port_selected(lacp_port) &&
- lacp_port_agg_selected(lacp_port))
- state |= INFO_STATE_SYNCHRONIZATION |
- INFO_STATE_COLLECTING | INFO_STATE_DISTRIBUTING;
+ lacp_port_agg_selected(lacp_port)) {
+ state |= INFO_STATE_SYNCHRONIZATION;
+ state &= ~(INFO_STATE_COLLECTING | INFO_STATE_DISTRIBUTING);
+ if (lacp_port->partner.state & INFO_STATE_SYNCHRONIZATION)
+ state |= INFO_STATE_COLLECTING |
+ INFO_STATE_DISTRIBUTING;
+ }
if (lacp_port->state == PORT_STATE_EXPIRED)
state |= INFO_STATE_EXPIRED;
if (lacp_port->state == PORT_STATE_DEFAULTED)
--
2.18.1

View File

@ -0,0 +1,38 @@
From 5f355301b7cafbb51b036ad1e5af38e79d4330d6 Mon Sep 17 00:00:00 2001
From: Hangbin Liu <liuhangbin@gmail.com>
Date: Fri, 11 Jan 2019 09:57:10 +0800
Subject: [PATCH 3/6] teamd: lw: arp_ping: only check arp reply message
Currently we check both arp request and reply message for arp_ping link
watch. But if we enabled validate_active and validate_inactive at the
same time, we will receive the other slave's arp request as the switch
broadcasts arp request message. i.e. slave1 receives arp request from
slave2 and vice versa.
Then the arp check will pass even the target is unreachable. Fix it by
only check arp reply message.
Reported-by: LiLiang <liali@redhat.com>
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
---
teamd/teamd_lw_arp_ping.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/teamd/teamd_lw_arp_ping.c b/teamd/teamd_lw_arp_ping.c
index 01cd6e1..81806f0 100644
--- a/teamd/teamd_lw_arp_ping.c
+++ b/teamd/teamd_lw_arp_ping.c
@@ -336,7 +336,8 @@ static int lw_ap_receive(struct lw_psr_port_priv *psr_ppriv)
if (ap.ah.ar_hrd != htons(ll_my.sll_hatype) ||
ap.ah.ar_pro != htons(ETH_P_IP) ||
ap.ah.ar_hln != ll_my.sll_halen ||
- ap.ah.ar_pln != 4) {
+ ap.ah.ar_pln != 4 ||
+ ap.ah.ar_op != htons(ARPOP_REPLY)) {
return 0;
}
--
2.18.1

View File

@ -0,0 +1,35 @@
From 6bf0e87387878654186bcf7287e0eda59b1c2f2c Mon Sep 17 00:00:00 2001
From: Hangbin Liu <liuhangbin@gmail.com>
Date: Thu, 21 Feb 2019 17:37:46 +0800
Subject: [PATCH 4/6] teamd: lw: nsna_ping: only send ns on enabled port
We forget to check forced_send when using nsna_ping link_watch.
Ns is sent from all ports, which cause switch mac flapping. Some
reply packets are delivered to disabled port and dropped directly.
Fix it by checking forced_send and only send ns on enabled port.
Reported-by: LiLiang <liali@redhat.com>
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
---
teamd/teamd_lw_nsna_ping.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/teamd/teamd_lw_nsna_ping.c b/teamd/teamd_lw_nsna_ping.c
index 127d950..82371c4 100644
--- a/teamd/teamd_lw_nsna_ping.c
+++ b/teamd/teamd_lw_nsna_ping.c
@@ -203,6 +203,9 @@ static int lw_nsnap_send(struct lw_psr_port_priv *psr_ppriv)
struct sockaddr_in6 sendto_addr;
struct ns_packet nsp;
+ if (!(psr_ppriv->common.forced_send))
+ return 0;
+
err = teamd_getsockname_hwaddr(psr_ppriv->sock, &ll_my,
sizeof(nsp.hwaddr));
if (err)
--
2.18.1

View File

@ -0,0 +1,62 @@
From 0f1b2fac03361c5d2bac34e4b19922c60c5c06c6 Mon Sep 17 00:00:00 2001
From: Hangbin Liu <liuhangbin@gmail.com>
Date: Wed, 13 Mar 2019 15:04:29 +0800
Subject: [PATCH 1/3] teamd: remove port if adding fails
When we add a port to team via teamdctl, some drivers do not support
changing mac address after dev opened, which would lead to the failure
of port_obj_create(). The call path looks like below for LACP mode:
- port_obj_create()
- port_priv_init_all()
- lacp_port_added()
- lacp_port_set_mac()
Currently, we only destroy the port object if adding port fails. But the
port is still enslaved to team in kernel. IP link command shows the port
is a team_slave, but teamdctl state shows nothing. This may make users
confused.
Fix it by removing the port if adding fails.
v2: also calls teamd_port_remove in port_obj_remove()
Reported-by: Vladimir Benes <vbenes@redhat.com>
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
---
teamd/teamd_per_port.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/teamd/teamd_per_port.c b/teamd/teamd_per_port.c
index 09d1dc7..f98a90d 100644
--- a/teamd/teamd_per_port.c
+++ b/teamd/teamd_per_port.c
@@ -42,6 +42,8 @@ struct port_obj {
};
#define _port(port_obj) (&(port_obj)->port)
+static int teamd_port_remove(struct teamd_context *ctx,
+ struct teamd_port *tdport);
int teamd_port_priv_create_and_get(void **ppriv, struct teamd_port *tdport,
const struct teamd_port_priv *pp,
@@ -203,6 +205,7 @@ static int port_obj_create(struct teamd_context *ctx,
teamd_event_port_removed:
teamd_event_port_removed(ctx, tdport);
list_del:
+ teamd_port_remove(ctx, tdport);
port_obj_destroy(ctx, port_obj);
port_obj_free(port_obj);
return err;
@@ -214,6 +217,7 @@ static void port_obj_remove(struct teamd_context *ctx,
struct teamd_port *tdport = _port(port_obj);
teamd_event_port_removed(ctx, tdport);
+ teamd_port_remove(ctx, tdport);
port_obj_destroy(ctx, port_obj);
port_obj_free(port_obj);
}
--
2.18.1

View File

@ -0,0 +1,42 @@
From 4dc3a7a042c88193f0371a33f1043919843e6447 Mon Sep 17 00:00:00 2001
From: Xin Long <lucien.xin@gmail.com>
Date: Mon, 1 Apr 2019 16:15:24 +0800
Subject: [PATCH 2/3] teamd: tdport has to exist if item->per_port is set in
__find_by_item_path
The issue can be reproduced by:
# teamd -c '{"device":"team0", "runner":{"name":"lacp"}}' &
# teamdctl team0 state item set runner.aggregator.selected true
teamd process will abort in lacp_port_state_aggregator_selected_set()
as gsc->info.tdport was set to NULL in teamd_state_item_value_set()
The item 'runner.aggregator.selected' is of per_port = true, and it
shouldn't allow to call its setter/getter().
This patch is to add the check for it in __find_by_item_path() called
by teamd_state_item_value_get/set().
Fixes: 6c00aaf02553 ("teamd: add support for state item write operation")
Signed-off-by: Xin Long <lucien.xin@gmail.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
---
teamd/teamd_state.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/teamd/teamd_state.c b/teamd/teamd_state.c
index ab64db9..0714880 100644
--- a/teamd/teamd_state.c
+++ b/teamd/teamd_state.c
@@ -333,6 +333,7 @@ static int __find_by_item_path(struct teamd_state_val_item **p_item,
list_for_each_node_entry(item, &ctx->state_val_list, list) {
/* item->subpath[0] == '.' */
if (!strcmp(item->subpath + 1, subpath) &&
+ (!item->per_port || tdport) &&
(!item->tdport || item->tdport == tdport)) {
*p_item = item;
*p_tdport = tdport;
--
2.18.1

View File

@ -0,0 +1,76 @@
From 90e5279ce0241838d5687739b3bc795235b7d53b Mon Sep 17 00:00:00 2001
From: Xin Long <lucien.xin@gmail.com>
Date: Mon, 15 Apr 2019 16:56:35 +0800
Subject: [PATCH 3/3] teamd: use enabled option_changed to sync enabled to
link_up for lb runner
LiLiang found an issue that after adding two ports into a team device with
lb mode their enabled option sometimes is false.
It was caused by the unexpected events order:
0. team_port_add() in kernel.
1. port_change event A1 sent to userspace.
2. option_change event B1 sent to userspace.
3. port_change event A2 sent to userspace IF port is up now.
4. process port_change event A1 and set port's enabled option 'false'.
5. option_change event B2 sent to userspace.
6. process option_change event B1 and sync enabled option (value = 1).
7. process port_change event A2 and do nothing as enabled option is 1.
8. process option_change event B2 and sync enabled option (value = 0).
In kernel, when the port is still down after dev_open(), which happens more
often since it changed to use netif_oper_up() to check the state instead of
netif_carrier_ok(), the event A2 in Step 3 can be sent at any moment. When
it's ahead of Step 4, Step 7 won't set enabled option to 1 as Step 8 comes
late.
As the port up event can be triggered by dev_watchdog at anytime in kernel,
the port_change and option_change events order can not be controlled. What
can only be done here is to correct it at Step 8, to sync enabled option to
link_up.
So this patch is to add enabled option_changed for lb mode to do this sync.
Reported-by: LiLiang <liali@redhat.com>
Signed-off-by: Xin Long <lucien.xin@gmail.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
---
teamd/teamd_runner_loadbalance.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/teamd/teamd_runner_loadbalance.c b/teamd/teamd_runner_loadbalance.c
index b9bfc13..a581472 100644
--- a/teamd/teamd_runner_loadbalance.c
+++ b/teamd/teamd_runner_loadbalance.c
@@ -109,12 +109,27 @@ static int lb_event_watch_port_hwaddr_changed(struct teamd_context *ctx,
return err;
}
+static int lb_event_watch_enabled_option_changed(struct teamd_context *ctx,
+ struct team_option *option,
+ void *priv)
+{
+ struct teamd_port *tdport;
+
+ tdport = teamd_get_port(ctx, team_get_option_port_ifindex(option));
+ if (!tdport)
+ return 0;
+
+ return lb_event_watch_port_link_changed(ctx, tdport, priv);
+}
+
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,
+ .option_changed = lb_event_watch_enabled_option_changed,
+ .option_changed_match_name = "enabled",
};
static int lb_init(struct teamd_context *ctx, void *priv)
--
2.18.1

View File

@ -0,0 +1,31 @@
From 6e67aa89a746ff98d4b4f4fa3c778aa31d4d2c7f Mon Sep 17 00:00:00 2001
From: Hangbin Liu <liuhangbin@gmail.com>
Date: Mon, 17 Dec 2018 16:58:34 +0800
Subject: [PATCH 1/6] teamnl: update help message
Update help message so people could know we support port name directly.
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
---
utils/teamnl.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/utils/teamnl.c b/utils/teamnl.c
index e8de7e2..c53345d 100644
--- a/utils/teamnl.c
+++ b/utils/teamnl.c
@@ -521,7 +521,9 @@ static void print_help(const char *argv0) {
printf(
"%s [options] teamdevname command [command args]\n"
- "\t-h --help Show this help\n",
+ "\t-h --help Show this help\n"
+ "\t-p --port_name team slave port name\n"
+ "\t-a --array_index team option array index\n",
argv0);
printf("Commands:\n");
for (i = 0; i < CMD_TYPE_COUNT; i++) {
--
2.18.1

569
SPECS/libteam.spec Normal file
View File

@ -0,0 +1,569 @@
Name: libteam
Version: 1.28
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-teamnl-update-help-message.patch
Patch2: libteam-teamd-config-update-local-prio-to-kernel.patch
Patch3: libteam-teamd-lw-arp_ping-only-check-arp-reply-message.patch
Patch4: libteam-teamd-lw-nsna_ping-only-send-ns-on-enabled-port.patch
Patch5: libteam-man-fix-runner.min_ports-default-value.patch
Patch6: libteam-teamd-lacp-update-port-state-according-to-partner-s-.patch
Patch7: libteam-teamd-remove-port-if-adding-fails.patch
Patch8: libteam-teamd-tdport-has-to-exist-if-item-per_port-is-set-in.patch
Patch9: libteam-teamd-use-enabled-option_changed-to-sync-enabled-to-.patch
BuildRequires: jansson-devel
BuildRequires: libdaemon-devel
BuildRequires: libnl3-devel
BuildRequires: python3-devel
BuildRequires: dbus-devel
BuildRequires: swig
BuildRequires: doxygen
BuildRequires: autoconf automake libtool
BuildRequires: systemd-units
%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}
%description doc
This package contains libteam and libteamd API documentation
%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 python3-libteam
%{?python_provide:%python_provide python3-libteam}
Group: Development/Libraries
Summary: Team network device library bindings
Requires: libteam = %{version}-%{release}
%package -n network-scripts-team
Group: Development/Libraries
Summary: libteam legacy network service support
Requires: network-scripts
Supplements: (teamd and network-scripts)
%description devel
The libteam-devel package contains the header files and libraries
necessary for developing programs using libteam.
%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 python3-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.
%description -n network-scripts-team
This provides the ifup and ifdown scripts for libteam use with the legacy
network service.
%prep
%autosetup -p1
autoreconf --force --install -I m4
# 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
%py3_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
%py3_install
%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
%{_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 python3-libteam
%doc COPYING _tmpdoc2/examples
%{python3_sitearch}/*
%files -n network-scripts-team
%{_sysconfdir}/sysconfig/network-scripts/ifup-Team
%{_sysconfdir}/sysconfig/network-scripts/ifdown-Team
%{_sysconfdir}/sysconfig/network-scripts/ifup-TeamPort
%{_sysconfdir}/sysconfig/network-scripts/ifdown-TeamPort
%changelog
* Mon Apr 29 2019 Xin Long <lxin@redhat.com> - 1.28-2
- teamd: use enabled option_changed to sync enabled to link_up for lb runner [1668132]
- teamd: tdport has to exist if item->per_port is set in __find_by_item_path [1687336]
- teamd: remove port if adding fails [1668744]
* Wed Apr 17 2019 Xin Long <lxin@redhat.com> - 1.28-1
- teamd: lacp: update port state according to partner's sync bit
- man: fix runner.min_ports default value [1679853]
- teamd: lw: nsna_ping: only send ns on enabled port [1671195]
- teamd: lw: arp_ping: only check arp reply message [1663093]
- teamd: config: update local prio to kernel [1657113]
- teamnl: update help message
- 1.28 release
- teamd: lacp: send LACPDU when port state transitions from DEFAULT to CURRENT
- man teamd.conf: Document ARP Ping link_watch.vlanid option
- man teamd.conf: fix indentation of link_watch.send_always
- libteam/options: fix s32/u32 data storage on big endian
- teamd: add an option to force log output to stdout, stderr or syslog
- teamd: add port_master_ifindex_changed for teamd_event_watch_ops
- man: add 'random' to the list of available runners
- examples: fix duplex comparison against best port
* Thu Jan 10 2019 Xin Long <lxin@redhat.com> - 1.27-10
- add new package network-scripts-team [1659846]
* Mon Aug 20 2018 Xin Long <lxin@redhat.com> - 1.27-9
- Added patch to fix the issue that no active port is set [1618710]
* Fri Aug 03 2018 Xin Long <lxin@redhat.com> - 1.27-8
- Add fix to only process LACPDU after port ifinfo is set
- Add port_hwaddr_changed for ab, lb and lacp runners
- Add patch to fix runner.sys_prio default in man docs
- Add patch to empty LDFLAGS before checking for libnl3 in configure.ac
- Add patch to not crash when trying to print unregistered device name
- Add patch to use SWIG_FromCharPtrAndSize for Python3 support
- Add patch to check to_stdout return correctly in bond2team in bond2team
- Add 'BuildRequires: systemd-units' in libteam.spec to fix building errors
- Add 'autoreconf --force --install -I m4' in libteam.sepc to regenerate configure
- Remove ifup/ifdown scripts installation in libteam.sepc
* Tue Jun 26 2018 Charalampos Stratakis <cstratak@redhat.com> - 1.27-7
- Change the python bindings to Python 3
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.27-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Tue Jan 09 2018 Iryna Shcherbina <ishcherb@redhat.com> - 1.27-5
- Update Python 2 dependency declarations to new packaging standards
(See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3)
* Sat Aug 19 2017 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.27-4
- Python 2 binary package renamed to python2-libteam
See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.27-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.27-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Mon Jun 05 2017 Jiri Pirko <jiri@resnulli.us> - 1.27-1
- 1.27 release
- teamd: check target host with nap.nah.nd_na_target
- teamd: check ipv6 packet only with the 4 bits version
- teamd: set correct bits for standby ports
- libteam: Add team_get_port_enabled function
- teamd: check port link_up when a port is added with loadbalance runner
- libteam: resynchronize ifinfo after lost RTNLGRP_LINK notifications
- SubmittingPatches: add checkpatch note
- README: add note regarding pull requests
- teamd: escape some sensitive characters in ifname with double quotation marks
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.26-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Fri Aug 26 2016 Jiri Pirko <jiri@resnulli.us> - 1.26-1
- 1.26 release
- teamd: lacp: Do not unselect port if it changes state to "expired"
- man: in lacp it's 'port_config', not 'port_options'
- teamd: fix the issue that network blocks when systemctl stop teamd
- teamd: change to Before=network-pre.target in systemd service file
- man teamd.conf: fix indentation
- misc: fix an out-of-bound write with zero-length hardware address
- teamd: LACP runner does not set Agg bit on first slave
* Tue Jul 19 2016 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.25-2
- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages
* Fri May 20 2016 Jiri Pirko <jiri@resnulli.us> - 1.25-1
- 1.25 release
- teamd: handle vlan 0 packets
- libteam: fix TEAM_OPTION_TYPE_BOOL type for big endian architectures
* Fri Apr 15 2016 Jiri Pirko <jiri@resnulli.us> - 1.24-1
- 1.24 release
- teamd: lacp: use original hwaddr as source address in lacpdus
- teamd: do correct l3/l4 tx hashing with vlans
- libteam: Fix broken links
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 1.23-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Thu Dec 17 2015 Jiri Pirko <jiri@resnulli.us> - 1.23-1
- 1.23 release
- dbus: don't do <deny send_interface="..." /> in template dbus s. f.
- libteam: retry on NLE_DUMP_INTR error
* Tue Nov 03 2015 Jiri Pirko <jiri@resnulli.us> - 1.22-1
- 1.22 release
- dbus: don't do <deny send_interface="..." /> in dbus service file
- teamd: Fix member port state change on master team admin UP.
- teamd: add CAP_NET_RAW capability for LACP packet sockets
- add teamd.conf.in to EXTRA_DIST
* Mon Oct 05 2015 Jiri Pirko <jiri@resnulli.us> - 1.21-1
- 1.21 release
- libteam: add missing "static inline" in nl_updates
- libteam: check for definition of NLA_PUT_S* separatelly
* Mon Oct 05 2015 Jiri Pirko <jiri@resnulli.us> - 1.20-1
- 1.20 release
- libteam: fix compile error with newer libnl
* Mon Oct 05 2015 Jiri Pirko <jiri@resnulli.us> - 1.19-1
- 1.19 release
- teamd: add Before=network.target to systemd service file
- teamd: lacp: update actor state before sending LACP frames
- regenerate dbus policy file from template when user changed
- drop privileges to usr/grp specified at build time
- make teamd's run directory configurable
- create run directory at teamd program start
- teamd: fix cut&paste issue on delay_up
- Add stamp-h1 artifact to .gitignore
- Reduce usock file permissions to 700.
- Do not fail teamd_add_ports() when one port is missing
- Add missing prototypes for admin_state functions
- teamd: lacp: Don't send LACP frames when master team device is down.
- libteam, teamd: Track admin state of team device and add handlers to watch for changes.
- teamd: loadbalance mode lacks a .hwaddr_changed in teamd_event_watch_ops
- libteamdctl: fix timeval value for select
* Fri Aug 21 2015 Jiri Pirko <jiri@resnulli.us> - 1.18-1
- 1.18 release
- teamd: lacp: change actor system value on team mac change
- Fix sending duplicate LACP frames at the start of establishing a logical channel.
- Fix teamd memory corruption issues seen by missing port unlink in ifinfo_destroy()
- libteam: Add check to disallow creating device names longer than 15 chars.
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.17-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Thu Apr 02 2015 Jiri Pirko <jpirko@redhat.com> - 1.17-1
- 1.17 release
- update copyright dates
- man: teamdctl: add entry for item set of debug_level
- teamd: lw: nsna_ping: fix na rx handling
- teamd: lw: arp_ping: fix arp rx handling
- libteam: ifinfo: fix rtnl dellink handling
* Tue Mar 24 2015 Jiri Pirko <jpirko@redhat.com> - 1.16-1
- 1.16 release
- teamd: events: update ctx->hwaddr_len before calling hwaddr_changed handlers
- teamd: do not change ctx->hwaddr pointer
- teamd: lacp: change port mac address when team mac address is changed
- teamdctl: show port link down count in state output
- teamd: lw: count how many times has been the port down
- init unitialized value to 0/NULL to silence gcc warnings instead of x=x
- libteamdctl: rename recvmsg variable to recv_message
- teamd: check retval of malloc in lw_tipc_link_state_change
- teamd: fix potential memory leak in __set_sockaddr error path
- libteamdctl: fix typo in warning message in cli_zmq_recv
- libteam: check phys_port_id_len in update_phys_port_id
- teamnl: fix potential memory leak in run_cmd_getoption
* Sat Feb 21 2015 Till Maas <opensource@till.name> - 1.15-2
- Rebuilt for Fedora 23 Change
https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code
* Wed Dec 17 2014 Jiri Pirko <jpirko@redhat.com> - 1.15-1
- 1.15 release
- teamd: ignore SIGPIPE
- libteamdctl: Fix a typo in DBus method name
* Wed Nov 05 2014 Jiri Pirko <jpirko@redhat.com> - 1.14-1
- 1.14 release
- teamd: lw_arp_ping: make buf static and avoid returning local pointer
* Wed Nov 05 2014 Jiri Pirko <jpirko@redhat.com> - 1.13-1
- 1.13 release
- teamd: fix coding style a bit after previous commit
- teamd: Don't ever kill PID 0
- teamd: tipc: topology-aware failover
- teamd: tipc: fix team port removal bugs
- zmq: remove unused my_free_msg
- libteamdctl: zmq: remove include of teamd.h
- teamd: add teamd_zmq_common.h to noinst headers
* Tue Aug 19 2014 Jiri Pirko <jpirko@redhat.com> - 1.12-1
- 1.12 release
- teamd: teamd_state_val_dump move TEAMD_BUG_ON so it can be actually triggered
- teamd: fix coverity error in teamd_sriov_physfn_addr
- libteamdctl: adjust doc comments to be processed by doxygen
- remove forgotten src dir
- libteam: stringify.c adjust doc comments to be processed by doxygen
- libteam: ports.c adjust doc comments to be processed by doxygen
- libteam: options.c adjust doc comments to be processed by doxygen
- libteam: ifinfo.c adjust doc comments to be processed by doxygen
- libteam: libteam.c adjust doc comments to be processed by doxygen
- add doxygen html doc generation into autoconf
- teamd: tipc: use TIPC_MAX_*_NAME for buffers and check len
- fix strncmp len in ifname2ifindex
- teamd: fix incorrect usage of sizeof in __str_sockaddr
* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.11-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
* Thu Jun 26 2014 Jiri Pirko <jpirko@redhat.com> - 1.11-1
- 1.11 release
- teamd: add forgotten teamd_link_watch.h to noinst_HEADERS
- teamd: add tipc.h kernel header
- teamd: Add support for TIPC link watcher
- teamd: add TIPC link watcher
- teamd: move icmp6 NS/NA ping link watcher to a separate file
- teamd: move arp ping link watcher to a separate file
- teamd: move psr template link watcher to a separate file
- teamd: move ethtool link watcher to a separate file
- teamd_dbus: add PortConfigDump to introspection
- teamd: allow restart on failure through systemd
- teamd: distinguish exit code between init error and runtime error
- man teamd.conf: remove "mandatory" since the options are no longer mandatory
- teamd: add "debug_level" config option
- teamd: allow to change debug level during run
- teamd: register debug callback at the start of callbacks list
- libteam: add team_change_handler_register_head function
- teamd: lacp: update partner info before setting state
- teamd: lacp: do not check SYNCHRO flag before enable of port
- teamd: lacp: "expired" port is not selectable, only "current"
- teamd: lacp: update actor system (mac) before sending lacpdu
- teamd: respect currently set user linkup for created linkwatches
- teamd: split --take-over option into --no-quit-destroy
- teamd: fix port removal when using take_over
- libteam: add SubmittingPatches doc
- libteam: Use u8 for put/get TEAM_ATTR_OPTION_TYPE
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.10-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Mon Mar 31 2014 Jiri Pirko <jpirko@redhat.com> - 1.10-1
- Update to 1.10
- teamd: quit when our team device is removed from outside
- libteam: ifinfo: watch for dellink messages and call change handlers for that
- initscripts: make ifup/ifdown scripts usable by ifup/ifdown-eth scripts
- teamdctl: unmess check_teamd_team_devname and fix double free there
- man: correct type of "*_host" options
- teamd_link_watch: specify "missed_max" option default value
- bond2team: do not guess source_host option
- teamd_link_watch: allow to send ARP probes if no source_host is specified
- initscripts: do not try to re-add port if it is already there
- teamdctl: add command for easy port presention checking
- Fix potential small memory leak
- usock: accept multiline message string parameters
- libteamdctl: add notice for caller to do not modify or free certain strings
- teamd: do not remove ports from team dev in case of take over mode
- teamd: look for existing ports before adding new ones
- libteam: introduce ream_refresh
- teamd: fixed couple comments.
- teamd: update hwaddr when changing team's macaddr
- redhat: fix boolean types in example 2
- initscripts: fix port up before master and port down after master
- lb: enable/disable port according to linkwatch state
- fix comment typo in ifdown-Team scripts
- man teamd.conf: Minor improvements to style and language
- man teamdctl: Minor improvements to style and language
* Thu Jan 23 2014 Jiri Pirko <jpirko@redhat.com> - 1.9-2
- fix multilib
* Tue Nov 12 2013 Jiri Pirko <jpirko@redhat.com> - 1.9-1
- Update 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
* Tue Aug 13 2013 Jiri Pirko <jpirko@redhat.com> - 1.8-1
- Update to 1.8
* Mon Aug 12 2013 Jiri Pirko <jpirko@redhat.com> - 1.7-1
- Update to 1.7
* Thu Aug 08 2013 Jiri Pirko <jpirko@redhat.com> - 1.6-1
- Update to 1.6
* Tue Jul 30 2013 Jiri Pirko <jpirko@redhat.com> - 1.5-1
- Update to 1.5
* Tue Jun 11 2013 Jiri Pirko <jpirko@redhat.com> - 1.3-1
- Update to 1.3
* Wed May 29 2013 Jiri Pirko <jpirko@redhat.com> - 1.2-1
- Update to 1.2
* Thu May 16 2013 Jiri Pirko <jpirko@redhat.com> - 1.1-1
- Update to 1.1
* Thu Jan 31 2013 Jiri Pirko <jpirko@redhat.com> - 1.0-1
- Update to 1.0
* Sun Jan 20 2013 Jiri Pirko <jpirko@redhat.com> - 0.1-27.20130110gitf16805c
- Rebuilt for libnl3
* Sun Jan 20 2013 Kalev Lember <kalevlember@gmail.com> - 0.1-26.20130110gitf16805c
- Rebuilt for libnl3
* Thu Jan 10 2013 Jiri Pirko <jpirko@redhat.com> - 0.1-25.20130110gitf16805c
- Rebase to git commit f16805c
* Wed Dec 12 2012 Jiri Pirko <jpirko@redhat.com> - 0.1-24.20121212git01fe4bd
- Rebase to git commit 01fe4bd
* Thu Dec 06 2012 Jiri Pirko <jpirko@redhat.com> - 0.1-23.20121206git659a848
- Rebase to git commit 659a848
* Thu Nov 22 2012 Jiri Pirko <jpirko@redhat.com> - 0.1-22.20121122git18b6701
- Rebase to git commit 18b6701
* Thu Nov 15 2012 Jiri Pirko <jpirko@redhat.com> - 0.1-21.20121115gitffb5267
- Rebase to git commit ffb5267
* Mon Nov 05 2012 Jiri Pirko <jpirko@redhat.com> - 0.1-20.20121105git3b95b34
- Rebase to git commit 3b95b34
* Thu Oct 25 2012 Jiri Pirko <jpirko@redhat.com> - 0.1-19.20121025git7fe7c72
- Rebase to git commit 7fe7c72
* Fri Oct 19 2012 Jiri Pirko <jpirko@redhat.com> - 0.1-18.20121019git1a91059
- Rebase to git commit 1a91059
* Sun Oct 07 2012 Jiri Pirko <jpirko@redhat.com> - 0.1-17.20121007git6f48751
- Rebase to git commit 6f48751
* Tue Sep 25 2012 Jiri Pirko <jpirko@redhat.com> - 0.1-16.20120925gitcc5cddc
- Rebase to git commit cc5cddc
* Sun Sep 23 2012 Jiri Pirko <jpirko@redhat.com> - 0.1-15.20120923git8448186
- Rebase to git commit 8448186
* Tue Sep 04 2012 Jiri Pirko <jpirko@redhat.com> - 0.1-14.20120904gitbdcf72c
- Rebase to git commit bdcf72c
* Wed Aug 22 2012 Jiri Pirko <jpirko@redhat.com> - 0.1-13.20120822gitc0d943d
- Rebase to git commit c0d943d
* Tue Aug 07 2012 Jiri Pirko <jpirko@redhat.com> - 0.1-12.20120807git9fa4a96
- Rebase to git commit 9fa4a96
* Thu Jul 19 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.1-11.20120628gitca7b526
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
* Thu Jun 28 2012 Jiri Pirko <jpirko@redhat.com> - 0.1-10.20120628gitca7b526
- Rebase to git commit ca7b526
* Wed Jun 27 2012 Jiri Pirko <jpirko@redhat.com> - 0.1-9.20120627git96569f8
- Rebase to git commit 96569f8
* Wed Jun 27 2012 Jiri Pirko <jpirko@redhat.com> - 0.1-8.20120627gitcd6b557
- Rebase to git commit cd6b557
* Wed Jun 20 2012 Jiri Pirko <jpirko@redhat.com> - 0.1-7.20120620gita88fabf
- Rebase to git commit a88fabf
* Fri May 04 2012 Jiri Pirko <jpirko@redhat.com> - 0.1-6.20120504git11e234a
- Rebase to git commit 11e234a
* Thu Apr 05 2012 Jiri Pirko <jpirko@redhat.com> - 0.1-5.20120405gita82f8ac
- Rebase to git commit a82f8ac
* Tue Feb 21 2012 Jiri Pirko <jpirko@redhat.com> - 0.1-4.20120221gitfe97f63
- Rebase to git commit fe97f63
* Mon Jan 30 2012 Jiri Pirko <jpirko@redhat.com> - 0.1-3.20120130gitb5cf2a8
- Rebase to git commit b5cf2a8
* Wed Jan 25 2012 Jiri Pirko <jpirko@redhat.com> - 0.1-2.20120125gita1718f8
- Rebase to git commit a1718f8
* Wed Jan 18 2012 Jiri Pirko <jpirko@redhat.com> - 0.1-1.20120113git302672e
- Initial build.