Hello community,
here is the log from the commit of package libteam for openSUSE:Factory checked in at 2015-09-19 06:55:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libteam (Old)
and /work/SRC/openSUSE:Factory/.libteam.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libteam"
Changes:
--------
--- /work/SRC/openSUSE:Factory/libteam/libteam.changes 2015-08-10 09:16:19.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.libteam.new/libteam.changes 2015-09-19 06:55:13.000000000 +0200
@@ -1,0 +2,12 @@
+Wed Sep 9 16:01:10 UTC 2015 - jengelh@inai.de
+
+- Update to new upstream release 1.18
+* 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 characters.
+
+-------------------------------------------------------------------
Old:
----
libteam-1.17.tar.gz
New:
----
libteam-1.18.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libteam.spec ++++++
--- /var/tmp/diff_new_pack.icpgva/_old 2015-09-19 06:55:14.000000000 +0200
+++ /var/tmp/diff_new_pack.icpgva/_new 2015-09-19 06:55:14.000000000 +0200
@@ -17,7 +17,7 @@
Name: libteam
-Version: 1.17
+Version: 1.18
Release: 0
Summary: Utilities for controlling 802.1AX team network device
License: LGPL-2.1+
++++++ libteam-1.17.tar.gz -> libteam-1.18.tar.gz ++++++
++++ 2888 lines of diff (skipped)
++++ retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libteam-1.17/build-aux/ar-lib new/libteam-1.18/build-aux/ar-lib
--- old/libteam-1.17/build-aux/ar-lib 2015-04-02 12:05:36.000000000 +0200
+++ new/libteam-1.18/build-aux/ar-lib 2015-08-21 07:51:19.000000000 +0200
@@ -4,7 +4,7 @@
me=ar-lib
scriptversion=2012-03-01.08; # UTC
-# Copyright (C) 2010-2013 Free Software Foundation, Inc.
+# Copyright (C) 2010-2014 Free Software Foundation, Inc.
# Written by Peter Rosin .
#
# This program is free software; you can redistribute it and/or modify
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libteam-1.17/build-aux/compile new/libteam-1.18/build-aux/compile
--- old/libteam-1.17/build-aux/compile 1970-01-01 01:00:00.000000000 +0100
+++ new/libteam-1.18/build-aux/compile 2015-08-21 07:51:19.000000000 +0200
@@ -0,0 +1,347 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand '-c -o'.
+
+scriptversion=2012-10-14.11; # UTC
+
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+# Written by Tom Tromey .
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see http://www.gnu.org/licenses/.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to or send patches to
+# .
+
+nl='
+'
+
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent tools from complaining about whitespace usage.
+IFS=" "" $nl"
+
+file_conv=
+
+# func_file_conv build_file lazy
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts. If the determined conversion
+# type is listed in (the comma separated) LAZY, no conversion will
+# take place.
+func_file_conv ()
+{
+ file=$1
+ case $file in
+ / | /[!/]*) # absolute file, and not a UNC file
+ if test -z "$file_conv"; then
+ # lazily determine how to convert abs files
+ case `uname -s` in
+ MINGW*)
+ file_conv=mingw
+ ;;
+ CYGWIN*)
+ file_conv=cygwin
+ ;;
+ *)
+ file_conv=wine
+ ;;
+ esac
+ fi
+ case $file_conv/,$2, in
+ *,$file_conv,*)
+ ;;
+ mingw/*)
+ file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+ ;;
+ cygwin/*)
+ file=`cygpath -m "$file" || echo "$file"`
+ ;;
+ wine/*)
+ file=`winepath -w "$file" || echo "$file"`
+ ;;
+ esac
+ ;;
+ esac
+}
+
+# func_cl_dashL linkdir
+# Make cl look for libraries in LINKDIR
+func_cl_dashL ()
+{
+ func_file_conv "$1"
+ if test -z "$lib_path"; then
+ lib_path=$file
+ else
+ lib_path="$lib_path;$file"
+ fi
+ linker_opts="$linker_opts -LIBPATH:$file"
+}
+
+# func_cl_dashl library
+# Do a library search-path lookup for cl
+func_cl_dashl ()
+{
+ lib=$1
+ found=no
+ save_IFS=$IFS
+ IFS=';'
+ for dir in $lib_path $LIB
+ do
+ IFS=$save_IFS
+ if $shared && test -f "$dir/$lib.dll.lib"; then
+ found=yes
+ lib=$dir/$lib.dll.lib
+ break
+ fi
+ if test -f "$dir/$lib.lib"; then
+ found=yes
+ lib=$dir/$lib.lib
+ break
+ fi
+ if test -f "$dir/lib$lib.a"; then
+ found=yes
+ lib=$dir/lib$lib.a
+ break
+ fi
+ done
+ IFS=$save_IFS
+
+ if test "$found" != yes; then
+ lib=$lib.lib
+ fi
+}
+
+# func_cl_wrapper cl arg...
+# Adjust compile command to suit cl
+func_cl_wrapper ()
+{
+ # Assume a capable shell
+ lib_path=
+ shared=:
+ linker_opts=
+ for arg
+ do
+ if test -n "$eat"; then
+ eat=
+ else
+ case $1 in
+ -o)
+ # configure might choose to run compile as 'compile cc -o foo foo.c'.
+ eat=1
+ case $2 in
+ *.o | *.[oO][bB][jJ])
+ func_file_conv "$2"
+ set x "$@" -Fo"$file"
+ shift
+ ;;
+ *)
+ func_file_conv "$2"
+ set x "$@" -Fe"$file"
+ shift
+ ;;
+ esac
+ ;;
+ -I)
+ eat=1
+ func_file_conv "$2" mingw
+ set x "$@" -I"$file"
+ shift
+ ;;
+ -I*)
+ func_file_conv "${1#-I}" mingw
+ set x "$@" -I"$file"
+ shift
+ ;;
+ -l)
+ eat=1
+ func_cl_dashl "$2"
+ set x "$@" "$lib"
+ shift
+ ;;
+ -l*)
+ func_cl_dashl "${1#-l}"
+ set x "$@" "$lib"
+ shift
+ ;;
+ -L)
+ eat=1
+ func_cl_dashL "$2"
+ ;;
+ -L*)
+ func_cl_dashL "${1#-L}"
+ ;;
+ -static)
+ shared=false
+ ;;
+ -Wl,*)
+ arg=${1#-Wl,}
+ save_ifs="$IFS"; IFS=','
+ for flag in $arg; do
+ IFS="$save_ifs"
+ linker_opts="$linker_opts $flag"
+ done
+ IFS="$save_ifs"
+ ;;
+ -Xlinker)
+ eat=1
+ linker_opts="$linker_opts $2"
+ ;;
+ -*)
+ set x "$@" "$1"
+ shift
+ ;;
+ *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
+ func_file_conv "$1"
+ set x "$@" -Tp"$file"
+ shift
+ ;;
+ *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
+ func_file_conv "$1" mingw
+ set x "$@" "$file"
+ shift
+ ;;
+ *)
+ set x "$@" "$1"
+ shift
+ ;;
+ esac
+ fi
+ shift
+ done
+ if test -n "$linker_opts"; then
+ linker_opts="-link$linker_opts"
+ fi
+ exec "$@" $linker_opts
+ exit 1
+}
+
+eat=
+
+case $1 in
+ '')
+ echo "$0: No command. Try '$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
+ -h | --h*)
+ cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand '-c -o'.
+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file 'INSTALL'.
+
+Report bugs to .
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "compile $scriptversion"
+ exit $?
+ ;;
+ cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+ func_cl_wrapper "$@" # Doesn't return...
+ ;;
+esac
+
+ofile=
+cfile=
+
+for arg
+do
+ if test -n "$eat"; then
+ eat=
+ else
+ case $1 in
+ -o)
+ # configure might choose to run compile as 'compile cc -o foo foo.c'.
+ # So we strip '-o arg' only if arg is an object.
+ eat=1
+ case $2 in
+ *.o | *.obj)
+ ofile=$2
+ ;;
+ *)
+ set x "$@" -o "$2"
+ shift
+ ;;
+ esac
+ ;;
+ *.c)
+ cfile=$1
+ set x "$@" "$1"
+ shift
+ ;;
+ *)
+ set x "$@" "$1"
+ shift
+ ;;
+ esac
+ fi
+ shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+ # If no '-o' option was seen then we might have been invoked from a
+ # pattern rule where we don't need one. That is ok -- this is a
+ # normal compilation that the losing compiler can handle. If no
+ # '.c' file was seen then we are probably linking. That is also
+ # ok.
+ exec "$@"
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use '[/\\:.-]' here to ensure that we don't use the same name
+# that we are using for the .o file. Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
+while true; do
+ if mkdir "$lockdir" >/dev/null 2>&1; then
+ break
+ fi
+ sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir '$lockdir'; exit 1" 1 2 15
+
+# Run the compile.
+"$@"
+ret=$?
+
+if test -f "$cofile"; then
+ test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+ test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
+fi
+
+rmdir "$lockdir"
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libteam-1.17/build-aux/missing new/libteam-1.18/build-aux/missing
--- old/libteam-1.17/build-aux/missing 2015-04-02 12:05:36.000000000 +0200
+++ new/libteam-1.18/build-aux/missing 2015-08-21 07:51:19.000000000 +0200
@@ -1,9 +1,9 @@
#! /bin/sh
# Common wrapper for a few potentially missing GNU programs.
-scriptversion=2012-06-26.16; # UTC
+scriptversion=2013-10-28.13; # UTC
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
# Originally written by Fran,cois Pinard , 1996.
# This program is free software; you can redistribute it and/or modify
@@ -160,7 +160,7 @@
;;
autom4te*)
echo "You might have modified some maintainer files that require"
- echo "the 'automa4te' program to be rebuilt."
+ echo "the 'autom4te' program to be rebuilt."
program_details 'autom4te'
;;
bison*|yacc*)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libteam-1.17/configure.ac new/libteam-1.18/configure.ac
--- old/libteam-1.17/configure.ac 2015-04-02 12:04:30.000000000 +0200
+++ new/libteam-1.18/configure.ac 2015-08-21 07:49:30.000000000 +0200
@@ -1,7 +1,7 @@
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
-AC_INIT([libteam], [1.17], [jiri@resnulli.us])
+AC_INIT([libteam], [1.18], [jiri@resnulli.us])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_HEADERS([config.h])
@@ -24,7 +24,7 @@
# release, then set age to 0.
AC_SUBST(LIBTEAM_CURRENT, 7)
-AC_SUBST(LIBTEAM_REVISION, 2)
+AC_SUBST(LIBTEAM_REVISION, 3)
AC_SUBST(LIBTEAM_AGE, 2)
AC_SUBST(LIBTEAMDCTL_CURRENT, 1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libteam-1.17/libteam/ifinfo.c new/libteam-1.18/libteam/ifinfo.c
--- old/libteam-1.17/libteam/ifinfo.c 2015-04-02 12:01:05.000000000 +0200
+++ new/libteam-1.18/libteam/ifinfo.c 2015-07-19 08:27:02.000000000 +0200
@@ -213,6 +213,8 @@
static void ifinfo_destroy(struct team_ifinfo *ifinfo)
{
+ if (ifinfo->linked && ifinfo->port)
+ port_unlink(ifinfo->port);
list_del(&ifinfo->list);
free(ifinfo);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libteam-1.17/libteam/libteam.c new/libteam-1.18/libteam/libteam.c
--- old/libteam-1.17/libteam/libteam.c 2015-04-02 12:01:05.000000000 +0200
+++ new/libteam-1.18/libteam/libteam.c 2015-05-30 11:12:34.000000000 +0200
@@ -458,6 +458,9 @@
return -ENOMEM;
if (team_name) {
+ if (strlen(team_name) >= IFNAMSIZ)
+ return -ENAMETOOLONG;
+
rtnl_link_set_name(link, team_name);
if (recreate && team_ifname2ifindex(th, team_name)) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libteam-1.17/libteam/ports.c new/libteam-1.18/libteam/ports.c
--- old/libteam-1.17/libteam/ports.c 2015-04-02 12:01:05.000000000 +0200
+++ new/libteam-1.18/libteam/ports.c 2015-07-19 08:27:02.000000000 +0200
@@ -83,7 +83,8 @@
static void port_destroy(struct team_handle *th,
struct team_port *port)
{
- ifinfo_unlink(port->ifinfo);
+ if (port->ifinfo)
+ ifinfo_unlink(port->ifinfo);
list_del(&port->list);
free(port);
}
@@ -226,6 +227,11 @@
flush_port_list(th);
}
+void port_unlink(struct team_port *port)
+{
+ port->ifinfo = NULL;
+}
+
/* \endcond */
/**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libteam-1.17/libteam/team_private.h new/libteam-1.18/libteam/team_private.h
--- old/libteam-1.17/libteam/team_private.h 2015-04-02 12:01:05.000000000 +0200
+++ new/libteam-1.18/libteam/team_private.h 2015-07-19 08:27:02.000000000 +0200
@@ -105,6 +105,7 @@
int port_list_alloc(struct team_handle *th);
int port_list_init(struct team_handle *th);
void port_list_free(struct team_handle *th);
+void port_unlink(struct team_port *port);
int ifinfo_event_handler(struct nl_msg *msg, void *arg);
int ifinfo_list_alloc(struct team_handle *th);
int ifinfo_list_init(struct team_handle *th);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libteam-1.17/teamd/teamd_runner_lacp.c new/libteam-1.18/teamd/teamd_runner_lacp.c
--- old/libteam-1.17/teamd/teamd_runner_lacp.c 2015-04-02 12:01:05.000000000 +0200
+++ new/libteam-1.18/teamd/teamd_runner_lacp.c 2015-08-21 07:44:29.000000000 +0200
@@ -870,15 +870,22 @@
return 0;
}
+static void lacp_port_actor_system_update(struct lacp_port *lacp_port)
+{
+ struct lacpdu_info *actor = &lacp_port->actor;
+
+ memcpy(actor->system, lacp_port->ctx->hwaddr, ETH_ALEN);
+}
+
static void lacp_port_actor_init(struct lacp_port *lacp_port)
{
struct lacpdu_info *actor = &lacp_port->actor;
actor->system_priority = htons(lacp_port->lacp->cfg.sys_prio);
- memcpy(actor->system, lacp_port->ctx->hwaddr, ETH_ALEN);
- actor->key = htons(lacp_port->cfg.lacp_key);
- actor->port_priority = htons(lacp_port->cfg.lacp_prio);
+ actor->key = htons(lacp_port->cfg.lacp_key);
+ actor->port_priority = htons(lacp_port->cfg.lacp_prio);
actor->port = htons(lacp_port->tdport->ifindex);
+ lacp_port_actor_system_update(lacp_port);
}
static int lacpdu_send(struct lacp_port *lacp_port);
@@ -903,6 +910,10 @@
teamd_log_dbg("%s: lacp info state: 0x%02X.", lacp_port->tdport->ifname,
state);
lacp_port->actor.state = state;
+
+ if (lacp_port->periodic_on)
+ return 0;
+
return lacpdu_send(lacp_port);
}
@@ -1056,7 +1067,8 @@
return err;
/* Check if the other side has correct info about us */
- if (memcmp(&lacpdu.partner, &lacp_port->actor,
+ if (!lacp_port->periodic_on &&
+ memcmp(&lacpdu.partner, &lacp_port->actor,
sizeof(struct lacpdu_info))) {
err = lacpdu_send(lacp_port);
if (err)
@@ -1275,17 +1287,17 @@
static int lacp_event_watch_hwaddr_changed(struct teamd_context *ctx,
void *priv)
{
+ struct lacp *lacp = priv;
struct teamd_port *tdport;
int err;
teamd_for_each_tdport(tdport, ctx) {
- 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);
+ struct lacp_port *lacp_port = lacp_port_get(lacp, tdport);
+
+ err = lacp_port_set_mac(ctx, tdport);
+ if (err)
return err;
- }
+ lacp_port_actor_system_update(lacp_port);
}
return 0;
}