Hello community,

here is the log from the commit of package libosmo-netif for openSUSE:Factory 
checked in at 2020-09-17 14:43:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libosmo-netif (Old)
 and      /work/SRC/openSUSE:Factory/.libosmo-netif.new.4249 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libosmo-netif"

Thu Sep 17 14:43:02 2020 rev:9 rq:832610 version:1.0.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/libosmo-netif/libosmo-netif.changes      
2020-01-08 17:55:27.605669549 +0100
+++ /work/SRC/openSUSE:Factory/.libosmo-netif.new.4249/libosmo-netif.changes    
2020-09-17 14:45:40.407614520 +0200
@@ -1,0 +2,6 @@
+Sun Sep  6 12:19:43 UTC 2020 - Jan Engelhardt <[email protected]>
+
+- Update to release 1.0.0
+  * stream: Add new WAIT_RECONNECT cli state
+
+-------------------------------------------------------------------

Old:
----
  libosmo-netif-0.7.0.tar.xz

New:
----
  libosmo-netif-1.0.0.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libosmo-netif.spec ++++++
--- /var/tmp/diff_new_pack.odTs4a/_old  2020-09-17 14:45:43.219617203 +0200
+++ /var/tmp/diff_new_pack.odTs4a/_new  2020-09-17 14:45:43.227617211 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package libosmo-netif
 #
-# Copyright (c) 2020 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -16,19 +16,18 @@
 #
 
 
-%define version_unconverted 0.7.0
+%define version_unconverted 1.0.0
 
 Name:           libosmo-netif
 Summary:        Osmocom library for muxed audio
 License:        GPL-2.0-or-later
 Group:          Productivity/Telephony/Utilities
-Version:        0.7.0
+Version:        1.0.0
 Release:        0
-Url:            https://osmocom.org/projects/libosmo-netif
+URL:            https://osmocom.org/projects/libosmo-netif
 
 Source:         %name-%version.tar.xz
 Patch1:         osmo-talloc.diff
-BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 BuildRequires:  automake
 BuildRequires:  libtool >= 2
 BuildRequires:  lksctp-tools-devel
@@ -63,21 +62,22 @@
 applications that want to make use of libosmo-netif.
 
 %prep
-%setup -q
-%patch -P 1 -p1
+%autosetup -p1
 
 %build
 echo "%version" >.tarball-version
 autoreconf -fiv
-%configure --enable-shared --disable-static --includedir="%_includedir/%name"
-make %{?_smp_mflags}
+# bugzilla.opensuse.org/795968 for rationale
+%configure --includedir="%_includedir/%name" \
+       --enable-shared --disable-static
+%make_build
 
 %install
 %make_install
 find "%buildroot/%_libdir" -type f -name "*.la" -delete
 
 %check
-if ! make %{?_smp_mflags} check; then
+if ! %make_build check; then
        rv=$?
        cat tests/testsuite.log
        echo "Suppressing exit $rv"
@@ -88,14 +88,12 @@
 %postun -n libosmonetif8 -p /sbin/ldconfig
 
 %files -n libosmonetif8
-%defattr(-,root,root)
 %_libdir/libosmonetif.so.8*
 
 %files -n libosmonetif-devel
-%defattr(-,root,root)
-%doc COPYING
-%dir %_includedir/%name
-%dir %_includedir/%name/osmocom
+%license COPYING
+%dir %_includedir/%name/
+%dir %_includedir/%name/osmocom/
 %_includedir/%name/osmocom/netif/
 %_libdir/libosmonetif.so
 %_libdir/pkgconfig/libosmo-netif.pc

++++++ _service ++++++
--- /var/tmp/diff_new_pack.odTs4a/_old  2020-09-17 14:45:43.271617253 +0200
+++ /var/tmp/diff_new_pack.odTs4a/_new  2020-09-17 14:45:43.271617253 +0200
@@ -1,9 +1,9 @@
 <services>
        <service name="tar_scm" mode="disabled">
                <param name="scm">git</param>
-               <param name="url">git://git.osmocom.org/libosmo-netif</param>
-               <param name="revision">0.7.0</param>
-               <param name="versionformat">0.7.0</param>
+               <param name="url">https://git.osmocom.org/libosmo-netif</param>
+               <param name="revision">1.0.0</param>
+               <param name="versionformat">1.0.0</param>
        </service>
        <service name="recompress" mode="disabled">
                <param name="file">*.tar</param>

++++++ libosmo-netif-0.7.0.tar.xz -> libosmo-netif-1.0.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libosmo-netif-0.7.0/Makefile.am 
new/libosmo-netif-1.0.0/Makefile.am
--- old/libosmo-netif-0.7.0/Makefile.am 2020-01-02 21:01:22.000000000 +0100
+++ new/libosmo-netif-1.0.0/Makefile.am 2020-08-13 11:21:03.000000000 +0200
@@ -6,7 +6,12 @@
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = libosmo-netif.pc
 
-EXTRA_DIST = .version README.md
+EXTRA_DIST = \
+            .version \
+            README.md \
+            contrib/libosmo-netif.spec.in \
+            debian \
+            $(NULL)
 
 @RELMAKE@
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libosmo-netif-0.7.0/configure.ac 
new/libosmo-netif-1.0.0/configure.ac
--- old/libosmo-netif-0.7.0/configure.ac        2020-01-02 21:01:22.000000000 
+0100
+++ new/libosmo-netif-1.0.0/configure.ac        2020-08-13 11:21:03.000000000 
+0200
@@ -22,6 +22,11 @@
 LT_INIT
 AC_PROG_LIBTOOL
 
+dnl patching ${archive_cmds} to affect generation of file "libtool" to fix 
linking with clang 
+AS_CASE(["$LD"],[*clang*],
+  [AS_CASE(["${host_os}"],
+     [*linux*],[archive_cmds='$CC -shared $pic_flag $libobjs $deplibs 
$compiler_flags $wl-soname $wl$soname -o $lib'])])
+
 dnl check for pkg-config (explained in detail in libosmocore/configure.ac)
 AC_PATH_PROG(PKG_CONFIG_INSTALLED, pkg-config, no)
 if test "x$PKG_CONFIG_INSTALLED" = "xno"; then
@@ -87,18 +92,24 @@
 dnl FIXME: We depend on libosmoabis by now until we can move LAPD code here
 PKG_CHECK_MODULES(LIBOSMOABIS, libosmoabis >= 0.6.0)
 
-old_LIBS=$LIBS
-AC_SEARCH_LIBS([sctp_send], [sctp], [
-       AC_DEFINE(HAVE_LIBSCTP, 1, [Define 1 to enable SCTP support])
-       AC_SUBST(HAVE_LIBSCTP, [1])
-       if test -n "$ac_lib"; then
-               AC_SUBST(LIBSCTP_LIBS, [-l$ac_lib])
-       fi
-       ], [
-       AC_MSG_ERROR([sctp_send not found in searched libs])])
-LIBS=$old_LIBS
-
-AC_CHECK_HEADERS(dahdi/user.h,,AC_MSG_WARN(DAHDI input driver will not be 
built))
+AC_ARG_ENABLE([libsctp], [AS_HELP_STRING([--disable-libsctp], [Do not enable 
socket multiaddr APIs requiring libsctp])],
+       [ENABLE_LIBSCTP=$enableval], [ENABLE_LIBSCTP="yes"])
+AM_CONDITIONAL(ENABLE_LIBSCTP, test x"$ENABLE_LIBSCTP" = x"yes")
+AS_IF([test "x$ENABLE_LIBSCTP" = "xyes"], [
+       AC_CHECK_HEADERS(netinet/sctp.h,,AC_MSG_ERROR(netinet/sctp.h not found))
+       old_LIBS=$LIBS
+       AC_CHECK_LIB(osmocore, osmo_sock_init2_multiaddr,, 
AC_MSG_ERROR(libosmocore built without libsctp support), $LIBOSMOCORE_LIBS)
+       LIBS=$old_LIBS
+       AC_SEARCH_LIBS([sctp_send], [sctp], [
+               AC_DEFINE(HAVE_LIBSCTP, 1, [Define 1 to enable SCTP support])
+               AC_SUBST(HAVE_LIBSCTP, [1])
+               if test -n "$ac_lib"; then
+                       AC_SUBST(LIBSCTP_LIBS, [-l$ac_lib])
+               fi
+               ], [
+               AC_MSG_ERROR([sctp_send not found in searched libs])])
+       LIBS=$old_LIBS
+])
 
 found_pcap=yes
 AC_CHECK_HEADERS(pcap.h,,found_pcap=no)
@@ -122,4 +133,5 @@
        examples/Makefile
        tests/Makefile
        Doxyfile
-       Makefile)
+       Makefile
+       contrib/libosmo-netif.spec)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libosmo-netif-0.7.0/contrib/libosmo-netif.spec.in 
new/libosmo-netif-1.0.0/contrib/libosmo-netif.spec.in
--- old/libosmo-netif-0.7.0/contrib/libosmo-netif.spec.in       1970-01-01 
01:00:00.000000000 +0100
+++ new/libosmo-netif-1.0.0/contrib/libosmo-netif.spec.in       2020-08-13 
11:21:03.000000000 +0200
@@ -0,0 +1,84 @@
+#
+# spec file for package libosmo-netif
+#
+# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+#
+# All modifications and additions to the file contributed by third parties
+# remain the property of their copyright owners, unless otherwise agreed
+# upon. The license for this file, and modifications and additions to the
+# file, is the same license as for the pristine package itself (unless the
+# license for the pristine package is not an Open Source License, in which
+# case the license is the MIT License). An "Open Source License" is a
+# license that conforms to the Open Source Definition (Version 1.9)
+# published by the Open Source Initiative.
+
+Name:           libosmo-netif
+Version:        @VERSION@
+Release:        0
+Summary:        Osmocom library for muxed audio
+License:        GPL-2.0-or-later
+Group:          Productivity/Telephony/Utilities
+URL:            https://osmocom.org/projects/libosmo-netif
+Source:         %{name}-%{version}.tar.xz
+BuildRequires:  automake
+BuildRequires:  libtool >= 2
+BuildRequires:  lksctp-tools-devel
+BuildRequires:  pkgconfig >= 0.20
+BuildRequires:  pkgconfig(libosmoabis) >= 0.6.0
+BuildRequires:  pkgconfig(libosmocore) >= 1.0.0
+BuildRequires:  pkgconfig(libosmogsm) >= 1.0.0
+
+%description
+Network interface demuxer library for OsmoCom projects.
+
+%package -n libosmonetif8
+Summary:        Osmocom library for muxed audio
+License:        AGPL-3.0-or-later
+Group:          System/Libraries
+
+%description -n libosmonetif8
+Network interface demuxer library for OsmoCom projects.
+
+%package -n libosmonetif-devel
+Summary:        Development files for the Osmocom muxed audio library
+License:        AGPL-3.0-or-later
+Group:          Development/Libraries/C and C++
+Requires:       libosmonetif8 = %{version}
+
+%description -n libosmonetif-devel
+Network interface demuxer library for OsmoCom projects.
+
+This subpackage contains libraries and header files for developing
+applications that want to make use of libosmo-netif.
+
+%prep
+%setup -q
+
+%build
+echo "%{version}" >.tarball-version
+autoreconf -fiv
+%configure --enable-shared --disable-static 
--includedir="%{_includedir}/%{name}"
+make %{?_smp_mflags}
+
+%install
+%make_install
+find %{buildroot} -type f -name "*.la" -delete -print
+
+%check
+make %{?_smp_mflags} check || (find . -name testsuite.log -exec cat {} +)
+
+%post   -n libosmonetif8 -p /sbin/ldconfig
+%postun -n libosmonetif8 -p /sbin/ldconfig
+
+%files -n libosmonetif8
+%{_libdir}/libosmonetif.so.8*
+
+%files -n libosmonetif-devel
+%license COPYING
+%dir %{_includedir}/%{name}
+%dir %{_includedir}/%{name}/osmocom
+%{_includedir}/%{name}/osmocom/netif/
+%{_libdir}/libosmonetif.so
+%{_libdir}/pkgconfig/libosmo-netif.pc
+
+%changelog
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libosmo-netif-0.7.0/debian/changelog 
new/libosmo-netif-1.0.0/debian/changelog
--- old/libosmo-netif-0.7.0/debian/changelog    2020-01-02 21:01:22.000000000 
+0100
+++ new/libosmo-netif-1.0.0/debian/changelog    2020-08-13 11:21:03.000000000 
+0200
@@ -1,3 +1,49 @@
+libosmo-netif (1.0.0) unstable; urgency=medium
+
+  [ Neels Hofmeyr ]
+  * struct amr_header: copy comments to little endian part
+  * add/clean big-endian packed structs (struct_endianess.py)
+
+  [ Pau Espin Pedrol ]
+  * configure.ac: Introduce --{enable,disable}-libsctp configure flag
+  * configure.ac: Drop unneeded check for dahdi
+  * stream.c: Improve logging during sock send()
+  * stream: Drop data during write() while in state NONE
+  * stream: Re-arrange cli states to fix 100% cpu usage bug
+  * stream: Add new WAIT_RECONNECT cli state
+  * stream: Rename cli state NONE to CLOSED
+  * debian/control: Drop incorrect libortp-dev dependency
+  * Use OSMO_FD_* instead of deprecated BSC_FD_*
+  * stream: Fix some SCTP code not disabled if --disable-libsctp is used
+
+  [ Eric ]
+  * configure.ac: fix libtool issue  with clang and sanitizer
+
+  [ Sylvain Munaut ]
+  * stream: Attempt to workaround kernel ABI breakage
+
+  [ Alexander Chemeris ]
+  * amr: Fix OA<->BWE conversion.
+  * amr: Fix OA<->BWE conversion.
+  * amr: Whitespace fix
+
+  [ neels ]
+  * Revert "amr: Fix OA<->BWE conversion."
+
+  [ Oliver Smith ]
+  * contrib: import RPM spec
+  * contrib: integrate RPM spec
+  * Makefile.am: EXTRA_DIST: debian, contrib/*.spec.in
+
+  [ Philipp Maier ]
+  * amr: fix off-by-one in osmo_amr_bwe_to_oa()
+
+  [ Harald Welte ]
+  * src/stream: Work around more Linux kernel ABI breakage
+  * src/stream.c: Don't leak socket during SCTP_EVENTS getsockopt
+
+ -- Harald Welte <[email protected]>  Thu, 13 Aug 2020 11:21:02 +0200
+
 libosmo-netif (0.7.0) unstable; urgency=medium
 
   [ Pau Espin Pedrol ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libosmo-netif-0.7.0/debian/control 
new/libosmo-netif-1.0.0/debian/control
--- old/libosmo-netif-0.7.0/debian/control      2020-01-02 21:01:22.000000000 
+0100
+++ new/libosmo-netif-1.0.0/debian/control      2020-08-13 11:21:03.000000000 
+0200
@@ -15,8 +15,7 @@
                libosmo-abis-dev (>= 0.6.0),
                pkg-config,
                libpcap0.8-dev,
-               libsctp-dev,
-               libortp-dev
+               libsctp-dev
 Standards-Version: 3.9.6
 Vcs-Browser: http://git.osmocom.org/libosmo-netif/
 Vcs-Git: git://git.osmocom.org/libosmo-netif.git
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libosmo-netif-0.7.0/examples/rs232-write.c 
new/libosmo-netif-1.0.0/examples/rs232-write.c
--- old/libosmo-netif-0.7.0/examples/rs232-write.c      2020-01-02 
21:01:22.000000000 +0100
+++ new/libosmo-netif-1.0.0/examples/rs232-write.c      2020-08-13 
11:21:03.000000000 +0200
@@ -377,7 +377,7 @@
                 exit(EXIT_FAILURE);
         }
         kbd_ofd->fd = STDIN_FILENO;
-        kbd_ofd->when = BSC_FD_READ;
+        kbd_ofd->when = OSMO_FD_READ;
         kbd_ofd->data = NULL;
         kbd_ofd->cb = kbd_cb;
         rc = osmo_fd_register(kbd_ofd);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libosmo-netif-0.7.0/examples/stream-client.c 
new/libosmo-netif-1.0.0/examples/stream-client.c
--- old/libosmo-netif-0.7.0/examples/stream-client.c    2020-01-02 
21:01:22.000000000 +0100
+++ new/libosmo-netif-1.0.0/examples/stream-client.c    2020-08-13 
11:21:03.000000000 +0200
@@ -142,7 +142,7 @@
                exit(EXIT_FAILURE);
        }
        kbd_ofd->fd = STDIN_FILENO;
-       kbd_ofd->when = BSC_FD_READ;
+       kbd_ofd->when = OSMO_FD_READ;
        kbd_ofd->data = conn;
        kbd_ofd->cb = kbd_cb;
        rc = osmo_fd_register(kbd_ofd);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libosmo-netif-0.7.0/examples/stream-server.c 
new/libosmo-netif-1.0.0/examples/stream-server.c
--- old/libosmo-netif-0.7.0/examples/stream-server.c    2020-01-02 
21:01:22.000000000 +0100
+++ new/libosmo-netif-1.0.0/examples/stream-server.c    2020-08-13 
11:21:03.000000000 +0200
@@ -166,7 +166,7 @@
                exit(EXIT_FAILURE);
        }
        kbd_ofd->fd = STDIN_FILENO;
-       kbd_ofd->when = BSC_FD_READ;
+       kbd_ofd->when = OSMO_FD_READ;
        kbd_ofd->data = srv;
        kbd_ofd->cb = kbd_cb;
        osmo_fd_register(kbd_ofd);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libosmo-netif-0.7.0/include/osmocom/netif/amr.h 
new/libosmo-netif-1.0.0/include/osmocom/netif/amr.h
--- old/libosmo-netif-0.7.0/include/osmocom/netif/amr.h 2020-01-02 
21:01:22.000000000 +0100
+++ new/libosmo-netif-1.0.0/include/osmocom/netif/amr.h 2020-08-13 
11:21:03.000000000 +0200
@@ -43,24 +43,19 @@
  */
 
 struct amr_hdr {
-#if OSMO_IS_BIG_ENDIAN
-       /* Payload Header */
-       uint8_t cmr:4,  /* Codec Mode Request */
-               pad1:4;
-       /* Table of Contents */
-       uint8_t f:1,    /* followed by another speech frame? */
-               ft:4,   /* coding mode */
-               q:1,    /* OK (not damaged) at origin? */
-               pad2:2;
-#elif OSMO_IS_LITTLE_ENDIAN
+#if OSMO_IS_LITTLE_ENDIAN
        /* Payload Header */
        uint8_t pad1:4,
-               cmr:4;
+               cmr:4;  /* Codec Mode Request */
        /* Table of Contents */
        uint8_t pad2:2,
-               q:1,
-               ft:4,
-               f:1;
+               q:1,    /* OK (not damaged) at origin? */
+               ft:4,   /* coding mode */
+               f:1;    /* followed by another speech frame? */
+#elif OSMO_IS_BIG_ENDIAN
+/* auto-generated from the little endian part above 
(libosmocore/contrib/struct_endianess.py) */
+       uint8_t cmr:4, pad1:4;
+       uint8_t f:1, ft:4, q:1, pad2:2;
 #endif
 } __attribute__((packed));
 
@@ -83,20 +78,34 @@
 #define AMR_FT_SID     8       /* SID */
 #define AMR_FT_MAX     9
 
-/* AMR voice frame length (in bytes, rounded),
- * See also RFC 3267, chapter 3.6 */
-#define AMR_FT_0_LEN   12      /* 4.75 */
-#define AMR_FT_1_LEN   13      /* 5.15 */
-#define AMR_FT_2_LEN   15      /* 5.90 */
-#define AMR_FT_3_LEN   17      /* 6.70 */
-#define AMR_FT_4_LEN   19      /* 7.40 */
-#define AMR_FT_5_LEN   20      /* 7.95 */
-#define AMR_FT_6_LEN   26      /* 10.2 */
-#define AMR_FT_7_LEN   31      /* 12.2 */
-#define AMR_FT_SID_LEN 5       /* SID */
-
-/* NOTE: the above constant refers to the length of one AMR speech frame-block,
+/* AMR voice frame length (in bits).
+ * See also RFC 3267, chapter 3.6.
+ *
+ * NOTE: These constants refer to the length of one AMR speech frame-block,
+ * not counting CMR, TOC. */
+#define AMR_FT_0_LEN_BITS      95      /* 4.75 */
+#define AMR_FT_1_LEN_BITS      103     /* 5.15 */
+#define AMR_FT_2_LEN_BITS      118     /* 5.90 */
+#define AMR_FT_3_LEN_BITS      134     /* 6.70 */
+#define AMR_FT_4_LEN_BITS      148     /* 7.40 */
+#define AMR_FT_5_LEN_BITS      159     /* 7.95 */
+#define AMR_FT_6_LEN_BITS      204     /* 10.2 */
+#define AMR_FT_7_LEN_BITS      244     /* 12.2 */
+#define AMR_FT_SID_LEN_BITS    39      /* SID */
+
+/* AMR voice frame length (in bytes, rounded).
+ *
+ * NOTE: These constants refer to the length of one AMR speech frame-block,
  * not counting CMR, TOC. */
+#define AMR_FT_0_LEN   ((AMR_FT_0_LEN_BITS+7)/8)       /* 4.75 */
+#define AMR_FT_1_LEN   ((AMR_FT_1_LEN_BITS+7)/8)       /* 5.15 */
+#define AMR_FT_2_LEN   ((AMR_FT_2_LEN_BITS+7)/8)       /* 5.90 */
+#define AMR_FT_3_LEN   ((AMR_FT_3_LEN_BITS+7)/8)       /* 6.70 */
+#define AMR_FT_4_LEN   ((AMR_FT_4_LEN_BITS+7)/8)       /* 7.40 */
+#define AMR_FT_5_LEN   ((AMR_FT_5_LEN_BITS+7)/8)       /* 7.95 */
+#define AMR_FT_6_LEN   ((AMR_FT_6_LEN_BITS+7)/8)       /* 10.2 */
+#define AMR_FT_7_LEN   ((AMR_FT_7_LEN_BITS+7)/8)       /* 12.2 */
+#define AMR_FT_SID_LEN ((AMR_FT_SID_LEN_BITS+7)/8)     /* SID */
 
 int osmo_amr_ft_valid(uint8_t amr_ft);
 size_t osmo_amr_bytes(uint8_t amr_cmr);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libosmo-netif-0.7.0/include/osmocom/netif/osmux.h 
new/libosmo-netif-1.0.0/include/osmocom/netif/osmux.h
--- old/libosmo-netif-0.7.0/include/osmocom/netif/osmux.h       2020-01-02 
21:01:22.000000000 +0100
+++ new/libosmo-netif-1.0.0/include/osmocom/netif/osmux.h       2020-08-13 
11:21:03.000000000 +0200
@@ -30,28 +30,25 @@
 #define OSMUX_FT_DUMMY         2
 
 struct osmux_hdr {
-#if OSMO_IS_BIG_ENDIAN
-       uint8_t rtp_m:1,
-               ft:2,
-               ctr:3,
-               amr_f:1,
-               amr_q:1;
-#elif OSMO_IS_LITTLE_ENDIAN
+#if OSMO_IS_LITTLE_ENDIAN
        uint8_t amr_q:1,
                amr_f:1,
                ctr:3,
                ft:2,
                rtp_m:1;
+#elif OSMO_IS_BIG_ENDIAN
+/* auto-generated from the little endian part above 
(libosmocore/contrib/struct_endianess.py) */
+       uint8_t rtp_m:1, ft:2, ctr:3, amr_f:1, amr_q:1;
 #endif
        uint8_t seq;
 #define OSMUX_CID_MAX          255     /* determined by circuit_id */
        uint8_t circuit_id;
-#if OSMO_IS_BIG_ENDIAN
-       uint8_t amr_ft:4,
-               amr_cmr:4;
-#elif OSMO_IS_LITTLE_ENDIAN
+#if OSMO_IS_LITTLE_ENDIAN
        uint8_t amr_cmr:4,
                amr_ft:4;
+#elif OSMO_IS_BIG_ENDIAN
+/* auto-generated from the little endian part above 
(libosmocore/contrib/struct_endianess.py) */
+       uint8_t amr_ft:4, amr_cmr:4;
 #endif
 } __attribute__((packed));
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libosmo-netif-0.7.0/include/osmocom/netif/rtp.h 
new/libosmo-netif-1.0.0/include/osmocom/netif/rtp.h
--- old/libosmo-netif-0.7.0/include/osmocom/netif/rtp.h 2020-01-02 
21:01:22.000000000 +0100
+++ new/libosmo-netif-1.0.0/include/osmocom/netif/rtp.h 2020-08-13 
11:21:03.000000000 +0200
@@ -13,12 +13,9 @@
        uint8_t  payload_type:7,
                 marker:1;
 #elif OSMO_IS_BIG_ENDIAN
-       uint8_t  version:2,
-                padding:1,
-                extension:1,
-                csrc_count:4;
-       uint8_t  marker:1,
-                payload_type:7;
+/* auto-generated from the little endian part above 
(libosmocore/contrib/struct_endianess.py) */
+       uint8_t  version:2, padding:1, extension:1, csrc_count:4;
+       uint8_t  marker:1, payload_type:7;
 #endif
        uint16_t sequence;
        uint32_t timestamp;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libosmo-netif-0.7.0/src/amr.c 
new/libosmo-netif-1.0.0/src/amr.c
--- old/libosmo-netif-0.7.0/src/amr.c   2020-01-02 21:01:22.000000000 +0100
+++ new/libosmo-netif-1.0.0/src/amr.c   2020-08-13 11:21:03.000000000 +0200
@@ -29,6 +29,18 @@
  *      7         12.20      244    31
  */
 
+static size_t amr_ft_to_bits[AMR_FT_MAX] = {
+       [AMR_FT_0]      = AMR_FT_0_LEN_BITS,
+       [AMR_FT_1]      = AMR_FT_1_LEN_BITS,
+       [AMR_FT_2]      = AMR_FT_2_LEN_BITS,
+       [AMR_FT_3]      = AMR_FT_3_LEN_BITS,
+       [AMR_FT_4]      = AMR_FT_4_LEN_BITS,
+       [AMR_FT_5]      = AMR_FT_5_LEN_BITS,
+       [AMR_FT_6]      = AMR_FT_6_LEN_BITS,
+       [AMR_FT_7]      = AMR_FT_7_LEN_BITS,
+       [AMR_FT_SID]    = AMR_FT_SID_LEN_BITS,
+};
+
 static size_t amr_ft_to_bytes[AMR_FT_MAX] = {
        [AMR_FT_0]      = AMR_FT_0_LEN,
        [AMR_FT_1]      = AMR_FT_1_LEN,
@@ -41,6 +53,11 @@
        [AMR_FT_SID]    = AMR_FT_SID_LEN,
 };
 
+size_t osmo_amr_bits(uint8_t amr_ft)
+{
+       return amr_ft_to_bits[amr_ft];
+}
+
 size_t osmo_amr_bytes(uint8_t amr_ft)
 {
        return amr_ft_to_bytes[amr_ft];
@@ -103,7 +120,7 @@
 
        /* Match the length of the received payload against the expected frame
         * length that is defined by the frame type. */
-       if(!osmo_amr_ft_valid(oa_hdr->ft))
+       if (!osmo_amr_ft_valid(oa_hdr->ft))
                return false;
        frame_len = osmo_amr_bytes(oa_hdr->ft);
        if (frame_len != payload_len - sizeof(struct amr_hdr))
@@ -119,8 +136,10 @@
 int osmo_amr_oa_to_bwe(uint8_t *payload, unsigned int payload_len)
 {
        struct amr_hdr *oa_hdr = (struct amr_hdr *)payload;
+       unsigned int ft = oa_hdr->ft;
        unsigned int frame_len = payload_len - sizeof(struct amr_hdr);
        unsigned int i;
+       int bwe_payload_len;
 
        /* This implementation is not capable to handle multi-frame
         * packets, so we need to make sure that the frame we operate on
@@ -128,6 +147,10 @@
        if (oa_hdr->f != 0)
                return -1;
 
+       /* Check for valid FT (AMR mode) value */
+       if (!osmo_amr_ft_valid(oa_hdr->ft))
+               return -1;
+
        /* Move TOC close to CMR */
        payload[0] |= (payload[1] >> 4) & 0x0f;
        payload[1] = (payload[1] << 4) & 0xf0;
@@ -137,8 +160,10 @@
                payload[i + 2] = payload[i + 2] << 6;
        }
 
-       /* The overall saving is one byte! */
-       return payload_len - 1;
+       /* Calculate new payload length */
+       bwe_payload_len = (10 + osmo_amr_bits(ft) + 7) / 8;
+
+       return bwe_payload_len;
 }
 
 /*! Convert an AMR frame from bandwith-efficient mode to octet-aligned mode.
@@ -150,8 +175,10 @@
                       unsigned int payload_maxlen)
 {
        uint8_t buf[256];
-       unsigned int frame_len = payload_len - 1;
+       /* The header is only valid after shifting first two bytes to OA mode */
+       struct amr_hdr *oa_hdr;
        unsigned int i;
+       int oa_payload_len;
 
        memset(buf, 0, sizeof(buf));
 
@@ -165,12 +192,18 @@
        buf[1] = payload[0] << 4;
        buf[1] |= (payload[1] >> 4) & 0x0c;
 
-       for (i = 0; i < frame_len - 1; i++) {
+       /* Calculate new payload length */
+       oa_hdr = (struct amr_hdr *)buf;
+       if (!osmo_amr_ft_valid(oa_hdr->ft))
+               return -1;
+       oa_payload_len = 2 + osmo_amr_bytes(oa_hdr->ft);
+
+       for (i = 0; i < oa_payload_len - 3; i++) {
                buf[i + 2] = payload[i + 1] << 2;
                buf[i + 2] |= payload[i + 2] >> 6;
        }
        buf[i + 2] = payload[i + 1] << 2;
 
-       memcpy(payload, buf, payload_len + 1);
-       return payload_len + 1;
+       memcpy(payload, buf, oa_payload_len);
+       return oa_payload_len;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libosmo-netif-0.7.0/src/datagram.c 
new/libosmo-netif-1.0.0/src/datagram.c
--- old/libosmo-netif-0.7.0/src/datagram.c      2020-01-02 21:01:22.000000000 
+0100
+++ new/libosmo-netif-1.0.0/src/datagram.c      2020-08-13 11:21:03.000000000 
+0200
@@ -95,7 +95,7 @@
        LOGP(DLINP, LOGL_DEBUG, "sending data\n");
 
        if (llist_empty(&conn->tx_queue)) {
-               conn->ofd.when &= ~BSC_FD_WRITE;
+               conn->ofd.when &= ~OSMO_FD_WRITE;
                return 0;
        }
        lh = conn->tx_queue.next;
@@ -115,7 +115,7 @@
 {
        struct osmo_dgram_tx *conn = ofd->data;
 
-       if (what & BSC_FD_WRITE) {
+       if (what & OSMO_FD_WRITE) {
                LOGP(DLINP, LOGL_DEBUG, "write\n");
                osmo_dgram_tx_write(conn);
        }
@@ -136,7 +136,7 @@
                return NULL;
 
        conn->ofd.fd = -1;
-       conn->ofd.when |= BSC_FD_READ;
+       conn->ofd.when |= OSMO_FD_READ;
        conn->ofd.priv_nr = 0;  /* XXX */
        conn->ofd.cb = osmo_dgram_tx_fd_cb;
        conn->ofd.data = conn;
@@ -240,7 +240,7 @@
                                 struct msgb *msg)
 {
        msgb_enqueue(&conn->tx_queue, msg);
-       conn->ofd.when |= BSC_FD_WRITE;
+       conn->ofd.when |= OSMO_FD_WRITE;
 }
 
 /*
@@ -290,7 +290,7 @@
        struct osmo_dgram_rx *conn = ofd->data;
 
        LOGP(DLINP, LOGL_DEBUG, "read\n");
-       if (what & BSC_FD_READ)
+       if (what & OSMO_FD_READ)
                osmo_dgram_rx_read(conn);
 
        return 0;
@@ -310,7 +310,7 @@
                return NULL;
 
        conn->ofd.fd = -1;
-       conn->ofd.when |= BSC_FD_READ;
+       conn->ofd.when |= OSMO_FD_READ;
        conn->ofd.cb = osmo_dgram_rx_cb;
        conn->ofd.data = conn;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libosmo-netif-0.7.0/src/rs232.c 
new/libosmo-netif-1.0.0/src/rs232.c
--- old/libosmo-netif-0.7.0/src/rs232.c 2020-01-02 21:01:22.000000000 +0100
+++ new/libosmo-netif-1.0.0/src/rs232.c 2020-08-13 11:21:03.000000000 +0200
@@ -62,7 +62,7 @@
        struct osmo_rs232 *r = ptr;
 
        /* we're again ready to transmit. */
-       r->ofd.when |= BSC_FD_WRITE;
+       r->ofd.when |= OSMO_FD_WRITE;
 }
 
 static int handle_ser_write(struct osmo_fd *bfd)
@@ -75,7 +75,7 @@
         LOGP(DLINP, LOGL_DEBUG, "writing data to rs232\n");
 
         if (llist_empty(&r->tx_queue)) {
-                r->ofd.when &= ~BSC_FD_WRITE;
+                r->ofd.when &= ~OSMO_FD_WRITE;
                 return 0;
         }
         lh = r->tx_queue.next;
@@ -92,7 +92,7 @@
 
        /* We've got more data to write, but we have to wait to make it. */
        if (!llist_empty(&r->tx_queue) && r->cfg.delay_us) {
-               r->ofd.when &= ~BSC_FD_WRITE;
+               r->ofd.when &= ~OSMO_FD_WRITE;
                osmo_timer_schedule(&r->tx_timer, 0, r->cfg.delay_us);
        }
        return 0;
@@ -114,13 +114,13 @@
 {
        int rc = 0;
 
-       if (what & BSC_FD_READ)
+       if (what & OSMO_FD_READ)
                rc = handle_ser_read(bfd);
 
        if (rc < 0)
                return rc;
 
-       if (what & BSC_FD_WRITE)
+       if (what & OSMO_FD_WRITE)
                rc = handle_ser_write(bfd);
 
        return rc;
@@ -223,7 +223,7 @@
                return rc;
        }
 
-       bfd->when = BSC_FD_READ;
+       bfd->when = OSMO_FD_READ;
        bfd->cb = serial_fd_cb;
        bfd->data = r;
 
@@ -257,7 +257,7 @@
 void osmo_rs232_write(struct osmo_rs232 *r, struct msgb *msg)
 {
         msgb_enqueue(&r->tx_queue, msg);
-        r->ofd.when |= BSC_FD_WRITE;
+        r->ofd.when |= OSMO_FD_WRITE;
 }
 
 void osmo_rs232_close(struct osmo_rs232 *r)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libosmo-netif-0.7.0/src/stream.c 
new/libosmo-netif-1.0.0/src/stream.c
--- old/libosmo-netif-0.7.0/src/stream.c        2020-01-02 21:01:22.000000000 
+0100
+++ new/libosmo-netif-1.0.0/src/stream.c        2020-08-13 11:21:03.000000000 
+0200
@@ -65,6 +65,7 @@
  *  \brief Osmocom stream socket helpers
  */
 
+#ifdef HAVE_LIBSCTP
 /*
  * Platforms that don't have MSG_NOSIGNAL (which disables SIGPIPE)
  * usually have SO_NOSIGPIPE (set via setsockopt).
@@ -73,6 +74,99 @@
 #define MSG_NOSIGNAL 0
 #endif
 
+/* is any of the bytes from offset .. u8_size in 'u8' non-zero? return offset 
or -1 if all zero */
+static int byte_nonzero(const uint8_t *u8, unsigned int offset, unsigned int 
u8_size)
+{
+       int j;
+
+       for (j = offset; j < u8_size; j++) {
+               if (u8[j] != 0)
+                       return j;
+       }
+
+       return -1;
+}
+
+static int sctp_sockopt_event_subscribe_size = 0;
+
+static int determine_sctp_sockopt_event_subscribe_size(void)
+{
+       uint8_t buf[256];
+       socklen_t buf_len = sizeof(buf);
+       int sd, rc;
+
+       /* only do this once */
+       if (sctp_sockopt_event_subscribe_size != 0)
+               return 0;
+
+       sd = socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP);
+       if (sd < 0)
+               return sd;
+
+       rc = getsockopt(sd, IPPROTO_SCTP, SCTP_EVENTS, buf, &buf_len);
+       close(sd);
+       if (rc < 0)
+               return rc;
+
+       sctp_sockopt_event_subscribe_size = buf_len;
+
+       LOGP(DLINP, LOGL_INFO, "sizes of 'struct sctp_event_subscribe': 
compile-time %zu, kernel: %u\n",
+               sizeof(struct sctp_event_subscribe), 
sctp_sockopt_event_subscribe_size);
+       return 0;
+}
+
+/* Attempt to work around Linux kernel ABI breakage
+ *
+ * The Linux kernel ABI for the SCTP_EVENTS socket option has been broken 
repeatedly.
+ *  - until commit 35ea82d611da59f8bea44a37996b3b11bb1d3fd7 ( kernel < 4.11), 
the size is 10 bytes
+ *  - in 4.11 it is 11 bytes
+ *  - in 4.12 .. 5.4 it is 13 bytes
+ *  - in kernels >= 5.5 it is 14 bytes
+ *
+ * This wouldn't be a problem if the kernel didn't have a "stupid" assumption 
that the structure
+ * size passed by userspace will match 1:1 the length of the structure at 
kernel compile time. In
+ * an ideal world, it would just use the known first bytes and assume the 
remainder is all zero.
+ * But as it doesn't do that, let's try to work around this */
+static int sctp_setsockopt_events_linux_workaround(int fd, const struct 
sctp_event_subscribe *event)
+{
+
+       const unsigned int compiletime_size = sizeof(*event);
+       int rc;
+
+       if (determine_sctp_sockopt_event_subscribe_size() < 0) {
+               LOGP(DLINP, LOGL_ERROR, "Cannot determine SCTP_EVENTS socket 
option size\n");
+               return -1;
+       }
+
+       if (compiletime_size == sctp_sockopt_event_subscribe_size) {
+               /* no kernel workaround needed */
+               return setsockopt(fd, IPPROTO_SCTP, SCTP_EVENTS, event, 
compiletime_size);
+       } else if (compiletime_size < sctp_sockopt_event_subscribe_size) {
+               /* we are using an older userspace with a more modern kernel 
and hence need
+                * to pad the data */
+               uint8_t buf[sctp_sockopt_event_subscribe_size];
+
+               memcpy(buf, event, compiletime_size);
+               memset(buf + sizeof(*event), 0, 
sctp_sockopt_event_subscribe_size - compiletime_size);
+               return setsockopt(fd, IPPROTO_SCTP, SCTP_EVENTS, buf, 
sctp_sockopt_event_subscribe_size);
+       } else /* if (compiletime_size > sctp_sockopt_event_subscribe_size) */ {
+               /* we are using a newer userspace with an older kernel and 
hence need to truncate
+                * the data - but only if the caller didn't try to enable any 
of the events of the
+                * truncated portion */
+               rc = byte_nonzero((const uint8_t *)event, 
sctp_sockopt_event_subscribe_size,
+                                 compiletime_size);
+               if (rc >= 0) {
+                       LOGP(DLINP, LOGL_ERROR, "Kernel only supports 
sctp_event_subscribe of %u bytes, "
+                               "but caller tried to enable more modern event 
at offset %u\n",
+                               sctp_sockopt_event_subscribe_size, rc);
+                       return -1;
+               }
+
+               return setsockopt(fd, IPPROTO_SCTP, SCTP_EVENTS, event, 
sctp_sockopt_event_subscribe_size);
+       }
+}
+#endif // HAVE_LIBSCTP
+
 static int sctp_sock_activate_events(int fd)
 {
 #ifdef HAVE_LIBSCTP
@@ -89,12 +183,10 @@
        event.sctp_shutdown_event = 1;
        /* IMPORTANT: Do NOT enable sender_dry_event here, see
         * https://bugzilla.redhat.com/show_bug.cgi?id=1442784 */
-       rc = setsockopt(fd, IPPROTO_SCTP, SCTP_EVENTS,
-                       &event, sizeof(event));
 
+       rc = sctp_setsockopt_events_linux_workaround(fd, &event);
        if (rc < 0)
-               LOGP(DLINP, LOGL_ERROR, "couldn't activate SCTP events "
-                    "on FD %u\n", fd);
+               LOGP(DLINP, LOGL_ERROR, "couldn't activate SCTP events on FD 
%u\n", fd);
        return rc;
 #else
        return -1;
@@ -106,9 +198,11 @@
        int rc;
 
        switch (proto) {
+#ifdef HAVE_LIBSCTP
        case IPPROTO_SCTP:
                rc = setsockopt(fd, IPPROTO_SCTP, SCTP_NODELAY, &on, 
sizeof(on));
                break;
+#endif
        case IPPROTO_TCP:
                rc = setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &on, sizeof(on));
                break;
@@ -127,31 +221,39 @@
  */
 
 enum osmo_stream_cli_state {
-        STREAM_CLI_STATE_NONE         = 0,
-        STREAM_CLI_STATE_CONNECTING   = 1,
-        STREAM_CLI_STATE_CONNECTED    = 2,
+        STREAM_CLI_STATE_CLOSED,        /* No fd associated, no timer active */
+        STREAM_CLI_STATE_WAIT_RECONNECT, /* No fd associated, has timer active 
to try to connect again */
+        STREAM_CLI_STATE_CONNECTING,    /* Fd associated, but connection not 
yet confirmed by peer or lower layers */
+        STREAM_CLI_STATE_CONNECTED,     /* Fd associated and connection is 
established */
         STREAM_CLI_STATE_MAX
 };
 
 static const struct value_string stream_cli_state_names[] = {
-       { STREAM_CLI_STATE_NONE,       "      NONE" },
-       { STREAM_CLI_STATE_CONNECTING, "CONNECTING" },
-       { STREAM_CLI_STATE_CONNECTED,  " CONNECTED" },
+       { STREAM_CLI_STATE_CLOSED,         "CLOSED" },
+       { STREAM_CLI_STATE_WAIT_RECONNECT, "WAIT_RECONNECT" },
+       { STREAM_CLI_STATE_CONNECTING,     "CONNECTING" },
+       { STREAM_CLI_STATE_CONNECTED,      "CONNECTED" },
        { 0, NULL }
 };
 
 #define OSMO_STREAM_CLI_F_RECONF       (1 << 0)
 #define OSMO_STREAM_CLI_F_NODELAY      (1 << 1)
 
+#ifdef HAVE_LIBSCTP
+#define OSMO_STREAM_MAX_ADDRS OSMO_SOCK_MAX_ADDRS
+#else
+#define OSMO_STREAM_MAX_ADDRS 1
+#endif
+
 struct osmo_stream_cli {
        struct osmo_fd                  ofd;
        struct llist_head               tx_queue;
        struct osmo_timer_list          timer;
        enum osmo_stream_cli_state      state;
-       char                            *addr[OSMO_SOCK_MAX_ADDRS];
+       char                            *addr[OSMO_STREAM_MAX_ADDRS];
        uint8_t                         addrcnt;
        uint16_t                        port;
-       char                            *local_addr[OSMO_SOCK_MAX_ADDRS];
+       char                            *local_addr[OSMO_STREAM_MAX_ADDRS];
        uint8_t                         local_addrcnt;
        uint16_t                        local_port;
        uint16_t                        proto;
@@ -179,10 +281,10 @@
                return;
        }
 
+       cli->state = STREAM_CLI_STATE_WAIT_RECONNECT;
        LOGSCLI(cli, LOGL_INFO, "retrying in %d seconds...\n",
                cli->reconnect_timeout);
        osmo_timer_schedule(&cli->timer, cli->reconnect_timeout, 0);
-       cli->state = STREAM_CLI_STATE_CONNECTING;
 }
 
 /*! \brief Check if Osmocom Stream Client is in connected state
@@ -211,7 +313,7 @@
                        cli->disconnect_cb(cli);
        }
 
-       cli->state = STREAM_CLI_STATE_NONE;
+       cli->state = STREAM_CLI_STATE_CLOSED;
 }
 
 static void osmo_stream_cli_read(struct osmo_stream_cli *cli)
@@ -231,21 +333,21 @@
        struct llist_head *lh;
        int ret;
 
-       LOGSCLI(cli, LOGL_DEBUG, "sending data\n");
-
        if (llist_empty(&cli->tx_queue)) {
-               cli->ofd.when &= ~BSC_FD_WRITE;
+               cli->ofd.when &= ~OSMO_FD_WRITE;
                return 0;
        }
        lh = cli->tx_queue.next;
        llist_del(lh);
        msg = llist_entry(lh, struct msgb, list);
 
-       if (cli->state == STREAM_CLI_STATE_CONNECTING) {
+       if (!osmo_stream_cli_is_connected(cli)) {
                LOGSCLI(cli, LOGL_ERROR, "not connected, dropping data!\n");
                return 0;
        }
 
+       LOGSCLI(cli, LOGL_DEBUG, "sending %u bytes of data\n", 
msgb_length(msg));
+
        switch (cli->proto) {
 #ifdef HAVE_LIBSCTP
        case IPPROTO_SCTP:
@@ -258,14 +360,14 @@
 #endif
        case IPPROTO_TCP:
        default:
-               ret = send(cli->ofd.fd, msg->data, msg->len, 0);
+               ret = send(cli->ofd.fd, msg->data, msgb_length(msg), 0);
                break;
        }
        if (ret < 0) {
                if (errno == EPIPE || errno == ENOTCONN) {
                        osmo_stream_cli_reconnect(cli);
                }
-               LOGSCLI(cli, LOGL_ERROR, "error to send\n");
+               LOGSCLI(cli, LOGL_ERROR, "error %d to send\n", ret);
        }
        msgb_free(msg);
        return 0;
@@ -288,7 +390,7 @@
                /* If messages got enqueued while 'connecting', keep WRITE flag
                   up to dispatch them upon next main loop step */
                if (llist_empty(&cli->tx_queue))
-                       cli->ofd.when &= ~BSC_FD_WRITE;
+                       cli->ofd.when &= ~OSMO_FD_WRITE;
 
                LOGSCLI(cli, LOGL_DEBUG, "connection done.\n");
                cli->state = STREAM_CLI_STATE_CONNECTED;
@@ -306,17 +408,18 @@
                        cli->connect_cb(cli);
                break;
        case STREAM_CLI_STATE_CONNECTED:
-               if (what & BSC_FD_READ) {
+               if (what & OSMO_FD_READ) {
                        LOGSCLI(cli, LOGL_DEBUG, "connected read\n");
                        osmo_stream_cli_read(cli);
                }
-               if (what & BSC_FD_WRITE) {
+               if (what & OSMO_FD_WRITE) {
                        LOGSCLI(cli, LOGL_DEBUG, "connected write\n");
                        osmo_stream_cli_write(cli);
                }
                break;
        default:
-               break;
+               /* Only CONNECTING and CONNECTED states are expected, since 
they are the only states where FD exists: */
+               osmo_panic("osmo_stream_cli_fd_cb called with unexpected state 
%d\n", cli->state);
        }
         return 0;
 }
@@ -337,11 +440,10 @@
 
        cli->proto = IPPROTO_TCP;
        cli->ofd.fd = -1;
-       cli->ofd.when |= BSC_FD_READ | BSC_FD_WRITE;
        cli->ofd.priv_nr = 0;   /* XXX */
        cli->ofd.cb = osmo_stream_cli_fd_cb;
        cli->ofd.data = cli;
-       cli->state = STREAM_CLI_STATE_CONNECTING;
+       cli->state = STREAM_CLI_STATE_CLOSED;
        osmo_timer_setup(&cli->timer, cli_timer_cb, cli);
        cli->reconnect_timeout = 5;     /* default is 5 seconds. */
        INIT_LLIST_HEAD(&cli->tx_queue);
@@ -369,7 +471,7 @@
 {
        int i = 0;
 
-       if (addrcnt > OSMO_SOCK_MAX_ADDRS)
+       if (addrcnt > OSMO_STREAM_MAX_ADDRS)
                return -EINVAL;
 
        for (; i < addrcnt; i++)
@@ -426,7 +528,7 @@
 {
        int i = 0;
 
-       if (addrcnt > OSMO_SOCK_MAX_ADDRS)
+       if (addrcnt > OSMO_STREAM_MAX_ADDRS)
                return -EINVAL;
 
        for (; i < addrcnt; i++)
@@ -554,12 +656,14 @@
        cli->flags &= ~OSMO_STREAM_CLI_F_RECONF;
 
        switch (cli->proto) {
+#ifdef HAVE_LIBSCTP
        case IPPROTO_SCTP:
                ret = osmo_sock_init2_multiaddr(AF_INET, SOCK_STREAM, 
cli->proto,
                                                (const char **)cli->local_addr, 
cli->local_addrcnt, cli->local_port,
                                                (const char **)cli->addr, 
cli->addrcnt, cli->port,
                                                
OSMO_SOCK_F_CONNECT|OSMO_SOCK_F_BIND|OSMO_SOCK_F_NONBLOCK);
                break;
+#endif
        default:
                ret = osmo_sock_init2(AF_INET, SOCK_STREAM, cli->proto,
                                      cli->local_addr[0], cli->local_port,
@@ -573,6 +677,7 @@
                return ret;
        }
        cli->ofd.fd = ret;
+       cli->ofd.when = OSMO_FD_READ | OSMO_FD_WRITE;
 
        if (cli->flags & OSMO_STREAM_CLI_F_NODELAY) {
                ret = setsockopt_nodelay(cli->ofd.fd, cli->proto, 1);
@@ -583,6 +688,7 @@
        if (osmo_fd_register(&cli->ofd) < 0)
                goto error_close_socket;
 
+       cli->state = STREAM_CLI_STATE_CONNECTING;
        return 0;
 
 error_close_socket:
@@ -623,12 +729,14 @@
 
 
        switch (cli->proto) {
+#ifdef HAVE_LIBSCTP
        case IPPROTO_SCTP:
                ret = osmo_sock_init2_multiaddr(AF_INET, SOCK_STREAM, 
cli->proto,
                                                (const char **)cli->local_addr, 
cli->local_addrcnt, cli->local_port,
                                                (const char **)cli->addr, 
cli->addrcnt, cli->port,
                                                
OSMO_SOCK_F_CONNECT|OSMO_SOCK_F_BIND|OSMO_SOCK_F_NONBLOCK);
                break;
+#endif
        default:
                ret = osmo_sock_init2(AF_INET, SOCK_STREAM, cli->proto,
                                      cli->local_addr[0], cli->local_port,
@@ -641,6 +749,7 @@
                return ret;
        }
        cli->ofd.fd = ret;
+       cli->ofd.when = OSMO_FD_READ | OSMO_FD_WRITE;
 
        if (cli->flags & OSMO_STREAM_CLI_F_NODELAY) {
                ret = setsockopt_nodelay(cli->ofd.fd, cli->proto, 1);
@@ -651,9 +760,11 @@
        if (osmo_fd_register(&cli->ofd) < 0)
                goto error_close_socket;
 
+       cli->state = STREAM_CLI_STATE_CONNECTING;
        return 0;
 
 error_close_socket:
+       cli->state = STREAM_CLI_STATE_CLOSED;
        close(cli->ofd.fd);
        cli->ofd.fd = -1;
        return -EIO;
@@ -664,15 +775,7 @@
        struct osmo_stream_cli *cli = data;
 
        LOGSCLI(cli, LOGL_DEBUG, "reconnecting.\n");
-
-       switch(cli->state) {
-       case STREAM_CLI_STATE_CONNECTING:
-               cli->ofd.when |= BSC_FD_READ | BSC_FD_WRITE;
-               osmo_stream_cli_open(cli);
-               break;
-       default:
-               break;
-       }
+       osmo_stream_cli_open(cli);
 }
 
 /*! \brief Enqueue data to be sent via an Osmocom stream client
@@ -681,7 +784,7 @@
 void osmo_stream_cli_send(struct osmo_stream_cli *cli, struct msgb *msg)
 {
        msgb_enqueue(&cli->tx_queue, msg);
-       cli->ofd.when |= BSC_FD_WRITE;
+       cli->ofd.when |= OSMO_FD_WRITE;
 }
 
 /*! \brief Receive data via an Osmocom stream client
@@ -718,7 +821,7 @@
 
 struct osmo_stream_srv_link {
         struct osmo_fd                  ofd;
-        char                            *addr[OSMO_SOCK_MAX_ADDRS];
+        char                            *addr[OSMO_STREAM_MAX_ADDRS];
         uint8_t                         addrcnt;
         uint16_t                        port;
         uint16_t                        proto;
@@ -788,7 +891,7 @@
 
        link->proto = IPPROTO_TCP;
        link->ofd.fd = -1;
-       link->ofd.when |= BSC_FD_READ | BSC_FD_WRITE;
+       link->ofd.when |= OSMO_FD_READ | OSMO_FD_WRITE;
        link->ofd.cb = osmo_stream_srv_fd_cb;
        link->ofd.data = link;
 
@@ -830,7 +933,7 @@
 {
        int i = 0;
 
-       if (addrcnt > OSMO_SOCK_MAX_ADDRS)
+       if (addrcnt > OSMO_STREAM_MAX_ADDRS)
                return -EINVAL;
 
        for (; i < addrcnt; i++)
@@ -950,11 +1053,13 @@
        link->flags &= ~OSMO_STREAM_SRV_F_RECONF;
 
        switch (link->proto) {
+#ifdef HAVE_LIBSCTP
        case IPPROTO_SCTP:
                ret = osmo_sock_init2_multiaddr(AF_INET, SOCK_STREAM, 
link->proto,
                                                (const char **)link->addr, 
link->addrcnt, link->port,
                                                NULL, 0, 0, OSMO_SOCK_F_BIND);
                break;
+#endif
        default:
                ret = osmo_sock_init(AF_INET, SOCK_STREAM, link->proto,
                                        link->addr[0], link->port, 
OSMO_SOCK_F_BIND);
@@ -1024,7 +1129,7 @@
        LOGP(DLINP, LOGL_DEBUG, "sending data\n");
 
        if (llist_empty(&conn->tx_queue)) {
-               conn->ofd.when &= ~BSC_FD_WRITE;
+               conn->ofd.when &= ~OSMO_FD_WRITE;
                return;
        }
        lh = conn->tx_queue.next;
@@ -1061,9 +1166,9 @@
        int rc = 0;
 
        LOGP(DLINP, LOGL_DEBUG, "connected read/write\n");
-       if (what & BSC_FD_READ)
+       if (what & OSMO_FD_READ)
                rc = osmo_stream_srv_read(conn);
-       if (rc != -EBADF && (what & BSC_FD_WRITE))
+       if (rc != -EBADF && (what & OSMO_FD_WRITE))
                osmo_stream_srv_write(conn);
 
        return rc;
@@ -1091,7 +1196,7 @@
        conn->ofd.fd = fd;
        conn->ofd.data = conn;
        conn->ofd.cb = osmo_stream_srv_cb;
-       conn->ofd.when = BSC_FD_READ;
+       conn->ofd.when = OSMO_FD_READ;
        conn->cb = cb;
        conn->closed_cb = closed_cb;
        conn->data = data;
@@ -1177,7 +1282,7 @@
        }
 
        msgb_enqueue(&conn->tx_queue, msg);
-       conn->ofd.when |= BSC_FD_WRITE;
+       conn->ofd.when |= OSMO_FD_WRITE;
 }
 
 /*! \brief Receive data via Osmocom stream server
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libosmo-netif-0.7.0/tests/amr/amr_test.c 
new/libosmo-netif-1.0.0/tests/amr/amr_test.c
--- old/libosmo-netif-0.7.0/tests/amr/amr_test.c        2020-01-02 
21:01:22.000000000 +0100
+++ new/libosmo-netif-1.0.0/tests/amr/amr_test.c        2020-08-13 
11:21:03.000000000 +0200
@@ -44,7 +44,10 @@
        "100c4e9ba850e30d5d53d04de41e7c",
        "100c6c18e7b7fff53aeb055e7d1c54",
        "100c1fb967f7f1fdf547bf2e61c060",
-       "a038ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00fc",   
/* test pattern */
+       "0004f89d67f1160935bde1996840",
+       "0004633cc7f0630439ffe0000000",
+       "0004eb81fc0758973b9edc782550",
+       "a078ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00fc",   
/* sample with invalid FT */
        "END",
 };
 
@@ -56,7 +59,7 @@
        "f3d39a49a09e7a802852e297e8c9246aadf5a45928bfc27177fed8404d97d3b8",
        "f3c2155b65131c68682079fab4810911200003b360ae0446000025f11e539dd0",
        "f3c381bc7061c9f8507f6029de6115c16e5fa470c243b21b6e35dbb48bd84c00",
-       "a7bfc03fc03fc03fc03fc03fc03fc03fc03fc03fc03fc03fc03fc03fc03fc03f",     
/* test pattern */
+       "a7bfc03fc03fc03fc03fc03fc03fc03fc03fc03fc03fc03fc03fc03fc03fc03f",     
/* sample with invalid FT */
        "END",
 };
 
@@ -87,7 +90,6 @@
                        return;
                printf("\n");
                printf("Sample No.: %i\n", i);
-               len = strlen(oa_amr_samples[i]);
 
                len = osmo_hexparse(oa_amr_samples[i], buf, sizeof(buf));
                OSMO_ASSERT(len > 0);
@@ -102,11 +104,6 @@
                dump_bits(buf, rc);
                printf("\n");
                printf("   rc: %i\n", rc);
-
-               if (rc > 0) {
-                       OSMO_ASSERT(rc == len - 1);
-                       OSMO_ASSERT(buf[len - 1] == 0x00);
-               }
                i++;
        }
 }
@@ -126,7 +123,6 @@
                        return;
                printf("\n");
                printf("Sample No.: %i\n", i);
-               len = strlen(bwe_amr_samples[i]);
 
                len = osmo_hexparse(bwe_amr_samples[i], buf, sizeof(buf));
                OSMO_ASSERT(len > 0);
@@ -142,7 +138,6 @@
                printf("\n");
                printf("   rc: %i\n", rc);
 
-               OSMO_ASSERT(rc == len + 1);
                i++;
        }
 }
@@ -151,6 +146,8 @@
 {
        uint8_t buf[256];
        uint8_t buf_chk[256];
+       struct amr_hdr *oa_hd = (struct amr_hdr *)buf;
+       unsigned int ft;
 
        unsigned int i = 0;
        int len;
@@ -163,18 +160,28 @@
        while (1) {
                if (strcmp(oa_amr_samples[i], "END") == 0)
                        return;
-               printf("Sample No.: %i...\n", i);
-               len = strlen(oa_amr_samples[i]);
+               printf("Sample No.: %i...", i);
 
                len = osmo_hexparse(oa_amr_samples[i], buf, sizeof(buf));
                OSMO_ASSERT(len > 0);
+               i++;
+
+               ft = oa_hd->ft;
+               if (!osmo_amr_ft_valid(ft)) {
+                       printf(" skipping a sample with a wrong FT\n");
+                       continue;
+               }
+               OSMO_ASSERT(osmo_amr_bytes(ft) + 2 == len);
+               printf(" AMR mode: %d, OA: %d bytes,", ft, len);
                memcpy(buf_chk, buf, sizeof(buf));
 
                rc = osmo_amr_oa_to_bwe(buf, len);
                OSMO_ASSERT(rc > 0);
+               printf(" BE: %d bytes,", rc);
                rc = osmo_amr_bwe_to_oa(buf, rc, sizeof(buf));
+               printf(" OA: %d bytes\n", rc);
+               OSMO_ASSERT(len == rc);
                OSMO_ASSERT(memcmp(buf, buf_chk, len) == 0);
-               i++;
        }
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libosmo-netif-0.7.0/tests/amr/amr_test.ok 
new/libosmo-netif-1.0.0/tests/amr/amr_test.ok
--- old/libosmo-netif-0.7.0/tests/amr/amr_test.ok       2020-01-02 
21:01:22.000000000 +0100
+++ new/libosmo-netif-1.0.0/tests/amr/amr_test.ok       2020-08-13 
11:21:03.000000000 +0200
@@ -47,23 +47,23 @@
 Sample No.: 6
    octet aligned: 502c98ab841e491ff7a1a555016a32a3c7f913210630
                   
01010000001011001001100010101011100001000001111001001001000111111111011110100001101001010101010100000001011010100011001010100011110001111111100100010011001000010000011000110000
-   bw-efficient:  52e62ae1079247fde86955405a8ca8f1fe44c8418c
-                  
010100101110011000101010111000010000011110010010010001111111110111101000011010010101010101000000010110101000110010101000111100011111111001000100110010000100000110001100
-   rc: 21
+   bw-efficient:  52e62ae1079247fde86955405a8ca8f1fe44c8418c00
+                  
01010010111001100010101011100001000001111001001001000111111111011110100001101001010101010100000001011010100011001010100011110001111111100100010011001000010000011000110000000000
+   rc: 22
 
 Sample No.: 7
    octet aligned: 502cc5459a0d200e7097c4dfe86ec8d27f1756d776f0
                   
01010000001011001100010101000101100110100000110100100000000011100111000010010111110001001101111111101000011011101100100011010010011111110001011101010110110101110111011011110000
-   bw-efficient:  52f151668348039c25f137fa1bb2349fc5d5b5ddbc
-                  
010100101111000101010001011001101000001101001000000000111001110000100101111100010011011111111010000110111011001000110100100111111100010111010101101101011101110110111100
-   rc: 21
+   bw-efficient:  52f151668348039c25f137fa1bb2349fc5d5b5ddbc00
+                  
01010010111100010101000101100110100000110100100000000011100111000010010111110001001101111111101000011011101100100011010010011111110001011101010110110101110111011011110000000000
+   rc: 22
 
 Sample No.: 8
    octet aligned: 502c42b332081813d7e916e7aa5e80d7fde812b8c080
                   
01010000001011000100001010110011001100100000100000011000000100111101011111101001000101101110011110101010010111101000000011010111111111011110100000010010101110001100000010000000
-   bw-efficient:  52d0accc820604f5fa45b9ea97a035ff7a04ae3020
-                  
010100101101000010101100110011001000001000000110000001001111010111111010010001011011100111101010100101111010000000110101111111110111101000000100101011100011000000100000
-   rc: 21
+   bw-efficient:  52d0accc820604f5fa45b9ea97a035ff7a04ae302000
+                  
01010010110100001010110011001100100000100000011000000100111101011111101001000101101110011110101010010111101000000011010111111111011110100000010010101110001100000010000000000000
+   rc: 22
 
 Sample No.: 9
    octet aligned: 40240343e959c79bacd20c77501054880a718db200
@@ -110,30 +110,51 @@
 Sample No.: 15
    octet aligned: 100c4e9ba850e30d5d53d04de41e7c
                   
000100000000110001001110100110111010100001010000111000110000110101011101010100111101000001001101111001000001111001111100
-   bw-efficient:  10d3a6ea1438c35754f41379079f
-                  
0001000011010011101001101110101000010100001110001100001101010111010101001111010000010011011110010000011110011111
-   rc: 14
+   bw-efficient:  10d3a6ea1438c35754f41379079f00
+                  
000100001101001110100110111010100001010000111000110000110101011101010100111101000001001101111001000001111001111100000000
+   rc: 15
 
 Sample No.: 16
    octet aligned: 100c6c18e7b7fff53aeb055e7d1c54
                   
000100000000110001101100000110001110011110110111111111111111010100111010111010110000010101011110011111010001110001010100
-   bw-efficient:  10db0639edfffd4ebac1579f4715
-                  
0001000011011011000001100011100111101101111111111111110101001110101110101100000101010111100111110100011100010101
-   rc: 14
+   bw-efficient:  10db0639edfffd4ebac1579f471500
+                  
000100001101101100000110001110011110110111111111111111010100111010111010110000010101011110011111010001110001010100000000
+   rc: 15
 
 Sample No.: 17
    octet aligned: 100c1fb967f7f1fdf547bf2e61c060
                   
000100000000110000011111101110010110011111110111111100011111110111110101010001111011111100101110011000011100000001100000
-   bw-efficient:  10c7ee59fdfc7f7d51efcb987018
-                  
0001000011000111111011100101100111111101111111000111111101111101010100011110111111001011100110000111000000011000
-   rc: 14
+   bw-efficient:  10c7ee59fdfc7f7d51efcb98701800
+                  
000100001100011111101110010110011111110111111100011111110111110101010001111011111100101110011000011100000001100000000000
+   rc: 15
 
 Sample No.: 18
-   octet aligned: 
a038ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00fc
-                  
101000000011100011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111100
-   bw-efficient:  
a3bfc03fc03fc03fc03fc03fc03fc03fc03fc03fc03fc03fc03fc03fc03fc03f
-                  
1010001110111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111
-   rc: 32
+   octet aligned: 0004f89d67f1160935bde1996840
+                  
0000000000000100111110001001110101100111111100010001011000001001001101011011110111100001100110010110100001000000
+   bw-efficient:  007e2759fc45824d6f78665a1000
+                  
0000000001111110001001110101100111111100010001011000001001001101011011110111100001100110010110100001000000000000
+   rc: 14
+
+Sample No.: 19
+   octet aligned: 0004633cc7f0630439ffe0000000
+                  
0000000000000100011000110011110011000111111100000110001100000100001110011111111111100000000000000000000000000000
+   bw-efficient:  0058cf31fc18c10e7ff800000000
+                  
0000000001011000110011110011000111111100000110001100000100001110011111111111100000000000000000000000000000000000
+   rc: 14
+
+Sample No.: 20
+   octet aligned: 0004eb81fc0758973b9edc782550
+                  
0000000000000100111010111000000111111100000001110101100010010111001110111001111011011100011110000010010101010000
+   bw-efficient:  007ae07f01d625cee7b71e095400
+                  
0000000001111010111000000111111100000001110101100010010111001110111001111011011100011110000010010101010000000000
+   rc: 14
+
+Sample No.: 21
+   octet aligned: 
a078ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00fc
+                  
101000000111100011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111100
+   bw-efficient:  
+                  (no data)
+   rc: -1
 
 
 Testing conversion from bw-efficient to octet-aligned:
@@ -141,16 +162,16 @@
 Sample No.: 0
    bw-efficient:  f4495c7cda8f80
                   11110100010010010101110001111100110110101000111110000000
-   octet aligned: f0442571f36a3e00
-                  
1111000001000100001001010111000111110011011010100011111000000000
-   rc: 8
+   octet aligned: f0442571f36a3c
+                  11110000010001000010010101110001111100110110101000111100
+   rc: 7
 
 Sample No.: 1
    bw-efficient:  f44aaa6c969780
                   11110100010010101010101001101100100101101001011110000000
-   octet aligned: f0442aa9b25a5e00
-                  
1111000001000100001010101010100110110010010110100101111000000000
-   rc: 8
+   octet aligned: f0442aa9b25a5c
+                  11110000010001000010101010101001101100100101101001011100
+   rc: 7
 
 Sample No.: 2
    bw-efficient:  
f3d09c20e32da600c025a72e0a9b360386e40f87e19282094adc1a11e397d1d4
@@ -183,31 +204,34 @@
 Sample No.: 6
    bw-efficient:  
a7bfc03fc03fc03fc03fc03fc03fc03fc03fc03fc03fc03fc03fc03fc03fc03f
                   
1010011110111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111
-   octet aligned: 
a078ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00fc
-                  
101000000111100011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111100
-   rc: 33
+   octet aligned: 
+                  (no data)
+   rc: -1
 
 
 Testing conversion from octet-aligned to bw-efficient and inverse:
-Sample No.: 0...
-Sample No.: 1...
-Sample No.: 2...
-Sample No.: 3...
-Sample No.: 4...
-Sample No.: 5...
-Sample No.: 6...
-Sample No.: 7...
-Sample No.: 8...
-Sample No.: 9...
-Sample No.: 10...
-Sample No.: 11...
-Sample No.: 12...
-Sample No.: 13...
-Sample No.: 14...
-Sample No.: 15...
-Sample No.: 16...
-Sample No.: 17...
-Sample No.: 18...
+Sample No.: 0... AMR mode: 7, OA: 33 bytes, BE: 32 bytes, OA: 33 bytes
+Sample No.: 1... AMR mode: 7, OA: 33 bytes, BE: 32 bytes, OA: 33 bytes
+Sample No.: 2... AMR mode: 7, OA: 33 bytes, BE: 32 bytes, OA: 33 bytes
+Sample No.: 3... AMR mode: 6, OA: 28 bytes, BE: 27 bytes, OA: 28 bytes
+Sample No.: 4... AMR mode: 6, OA: 28 bytes, BE: 27 bytes, OA: 28 bytes
+Sample No.: 5... AMR mode: 6, OA: 28 bytes, BE: 27 bytes, OA: 28 bytes
+Sample No.: 6... AMR mode: 5, OA: 22 bytes, BE: 22 bytes, OA: 22 bytes
+Sample No.: 7... AMR mode: 5, OA: 22 bytes, BE: 22 bytes, OA: 22 bytes
+Sample No.: 8... AMR mode: 5, OA: 22 bytes, BE: 22 bytes, OA: 22 bytes
+Sample No.: 9... AMR mode: 4, OA: 21 bytes, BE: 20 bytes, OA: 21 bytes
+Sample No.: 10... AMR mode: 4, OA: 21 bytes, BE: 20 bytes, OA: 21 bytes
+Sample No.: 11... AMR mode: 4, OA: 21 bytes, BE: 20 bytes, OA: 21 bytes
+Sample No.: 12... AMR mode: 2, OA: 17 bytes, BE: 16 bytes, OA: 17 bytes
+Sample No.: 13... AMR mode: 2, OA: 17 bytes, BE: 16 bytes, OA: 17 bytes
+Sample No.: 14... AMR mode: 2, OA: 17 bytes, BE: 16 bytes, OA: 17 bytes
+Sample No.: 15... AMR mode: 1, OA: 15 bytes, BE: 15 bytes, OA: 15 bytes
+Sample No.: 16... AMR mode: 1, OA: 15 bytes, BE: 15 bytes, OA: 15 bytes
+Sample No.: 17... AMR mode: 1, OA: 15 bytes, BE: 15 bytes, OA: 15 bytes
+Sample No.: 18... AMR mode: 0, OA: 14 bytes, BE: 14 bytes, OA: 14 bytes
+Sample No.: 19... AMR mode: 0, OA: 14 bytes, BE: 14 bytes, OA: 14 bytes
+Sample No.: 20... AMR mode: 0, OA: 14 bytes, BE: 14 bytes, OA: 14 bytes
+Sample No.: 21... skipping a sample with a wrong FT
 
 
 Testing detection of octet-aligned mode payloads:
@@ -230,6 +254,9 @@
 Sample No.: 16 ==>octet aligned
 Sample No.: 17 ==>octet aligned
 Sample No.: 18 ==>octet aligned
+Sample No.: 19 ==>octet aligned
+Sample No.: 20 ==>octet aligned
+Sample No.: 21 ==>bandwith efficient
 Sample No.: 0 ==>bandwith efficient
 Sample No.: 1 ==>bandwith efficient
 Sample No.: 2 ==>bandwith efficient
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libosmo-netif-0.7.0/tests/stream/stream_test.err 
new/libosmo-netif-1.0.0/tests/stream/stream_test.err
--- old/libosmo-netif-0.7.0/tests/stream/stream_test.err        2020-01-02 
21:01:22.000000000 +0100
+++ new/libosmo-netif-1.0.0/tests/stream/stream_test.err        2020-08-13 
11:21:03.000000000 +0200
@@ -12,8 +12,8 @@
 {2.000006} autoreconnecting test step 6 [client OK, server OK], FD reg 1
 
 {2.000007} autoreconnecting test step 5 [client OK, server OK], FD reg 1
-[ CONNECTED] osmo_stream_cli_recv(): connection closed with srv
-[      NONE] osmo_stream_cli_reconnect(): retrying in 9 seconds...
+[CONNECTED] osmo_stream_cli_recv(): connection closed with srv
+[WAIT_RECONNECT] osmo_stream_cli_reconnect(): retrying in 9 seconds...
 
 {11.000008} autoreconnecting test step 4 [client OK, server OK], FD reg 0
 
@@ -37,7 +37,7 @@
 {11.000017} non-reconnecting test step 2 [client OK, server OK], FD reg 1
 
 {11.000018} non-reconnecting test step 1 [client OK, server OK], FD reg 1
-[ CONNECTED] osmo_stream_cli_recv(): connection closed with srv
-[      NONE] osmo_stream_cli_reconnect(): not reconnecting, disabled.
+[CONNECTED] osmo_stream_cli_recv(): connection closed with srv
+[CLOSED] osmo_stream_cli_reconnect(): not reconnecting, disabled.
 
 {20.000019} non-reconnecting test step 0 [client OK, server OK], FD reg 0

++++++ osmo-talloc.diff ++++++
--- /var/tmp/diff_new_pack.odTs4a/_old  2020-09-17 14:45:43.463617436 +0200
+++ /var/tmp/diff_new_pack.odTs4a/_new  2020-09-17 14:45:43.463617436 +0200
@@ -1,19 +1,25 @@
-diff --git a/configure.ac b/configure.ac
-index 7af10ec..619f4ad 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -98,6 +98,7 @@ AC_SEARCH_LIBS([sctp_send], [sctp], [
-       AC_MSG_ERROR([sctp_send not found in searched libs])])
- LIBS=$old_LIBS
+---
+ configure.ac         |    1 +
+ examples/Makefile.am |   30 +++++++++++++++---------------
+ src/Makefile.am      |    2 +-
+ 3 files changed, 17 insertions(+), 16 deletions(-)
+
+Index: libosmo-netif-1.0.0/configure.ac
+===================================================================
+--- libosmo-netif-1.0.0.orig/configure.ac
++++ libosmo-netif-1.0.0/configure.ac
+@@ -111,6 +111,7 @@ AS_IF([test "x$ENABLE_LIBSCTP" = "xyes"]
+       LIBS=$old_LIBS
+ ])
  
 +PKG_CHECK_MODULES([TALLOC], [talloc])
- AC_CHECK_HEADERS(dahdi/user.h,,AC_MSG_WARN(DAHDI input driver will not be 
built))
- 
  found_pcap=yes
-diff --git a/examples/Makefile.am b/examples/Makefile.am
-index 4125243..8780fba 100644
---- a/examples/Makefile.am
-+++ b/examples/Makefile.am
+ AC_CHECK_HEADERS(pcap.h,,found_pcap=no)
+ AM_CONDITIONAL(HAVE_PCAP, test "$found_pcap" = yes)
+Index: libosmo-netif-1.0.0/examples/Makefile.am
+===================================================================
+--- libosmo-netif-1.0.0.orig/examples/Makefile.am
++++ libosmo-netif-1.0.0/examples/Makefile.am
 @@ -1,5 +1,5 @@
  AM_CPPFLAGS = -I$(top_srcdir)/include
 -AM_CFLAGS=-Wall -g $(LIBOSMOCORE_CFLAGS) $(LIBOSMOGSM_CFLAGS) 
$(LIBOSMOABIS_CFLAGS) $(COVERAGE_CFLAGS)
@@ -90,10 +96,10 @@
  osmux_test_output_LDADD = $(top_builddir)/src/libosmonetif.la \
 -                        $(LIBOSMOCORE_LIBS) $(LIBOSMOGSM_LIBS)
 +                        $(LIBOSMOCORE_LIBS) $(LIBOSMOGSM_LIBS) $(TALLOC_LIBS)
-diff --git a/src/Makefile.am b/src/Makefile.am
-index 64fd1d4..3da783f 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
+Index: libosmo-netif-1.0.0/src/Makefile.am
+===================================================================
+--- libosmo-netif-1.0.0.orig/src/Makefile.am
++++ libosmo-netif-1.0.0/src/Makefile.am
 @@ -3,7 +3,7 @@
  LIBVERSION=9:0:1
  


Reply via email to