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 - jeng...@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 <p...@lysator.liu.se>. # # 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 <tro...@cygnus.com>. +# +# 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 <bug-autom...@gnu.org> or send patches to +# <automake-patc...@gnu.org>. + +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 <bug-autom...@gnu.org>. +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 <pin...@iro.umontreal.ca>, 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], [j...@resnulli.us]) +AC_INIT([libteam], [1.18], [j...@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; }