Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package libosmo-sccp for openSUSE:Factory checked in at 2022-08-04 13:23:29 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libosmo-sccp (Old) and /work/SRC/openSUSE:Factory/.libosmo-sccp.new.1521 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libosmo-sccp" Thu Aug 4 13:23:29 2022 rev:18 rq:992628 version:1.6.0 Changes: -------- --- /work/SRC/openSUSE:Factory/libosmo-sccp/libosmo-sccp.changes 2021-11-20 02:40:50.064444723 +0100 +++ /work/SRC/openSUSE:Factory/.libosmo-sccp.new.1521/libosmo-sccp.changes 2022-08-04 13:23:48.200556515 +0200 @@ -1,0 +2,7 @@ +Wed Aug 3 16:35:16 UTC 2022 - Jan Engelhardt <jeng...@inai.de> + +- Update to release 1.6.0 + * Add ss7 instances to osmo_ss7_instances in creation order + * M3UA/SUA: Implement handling of SCON (signaling congestion) + +------------------------------------------------------------------- Old: ---- 1.5.0.tar.gz New: ---- 1.6.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libosmo-sccp.spec ++++++ --- /var/tmp/diff_new_pack.uUr3RK/_old 2022-08-04 13:23:48.720557990 +0200 +++ /var/tmp/diff_new_pack.uUr3RK/_new 2022-08-04 13:23:48.724558001 +0200 @@ -1,7 +1,7 @@ # # spec file for package libosmo-sccp # -# Copyright (c) 2021 SUSE LLC +# Copyright (c) 2022 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: libosmo-sccp -Version: 1.5.0 +Version: 1.6.0 Release: 0 %define libversion %(echo "%version" | sed 's/\\./_/g') Summary: Osmocom library for the A-bis interface between BTS and BSC @@ -34,10 +34,10 @@ BuildRequires: lksctp-tools-devel BuildRequires: pkg-config >= 0.20 BuildRequires: systemd-rpm-macros -BuildRequires: pkgconfig(libosmo-netif) >= 1.1.0 -BuildRequires: pkgconfig(libosmocore) >= 1.5.0 -BuildRequires: pkgconfig(libosmogsm) >= 1.5.0 -BuildRequires: pkgconfig(libosmovty) >= 1.5.0 +BuildRequires: pkgconfig(libosmo-netif) >= 1.2.0 +BuildRequires: pkgconfig(libosmocore) >= 1.7.0 +BuildRequires: pkgconfig(libosmogsm) >= 1.7.0 +BuildRequires: pkgconfig(libosmovty) >= 1.7.0 %description SCCP is a network layer protocol that provides extended routing, flow ++++++ 0001-build-fixes.patch ++++++ --- /var/tmp/diff_new_pack.uUr3RK/_old 2022-08-04 13:23:48.768558126 +0200 +++ /var/tmp/diff_new_pack.uUr3RK/_new 2022-08-04 13:23:48.772558138 +0200 @@ -20,22 +20,22 @@ tests/xua/Makefile.am | 6 ++---- 8 files changed, 24 insertions(+), 17 deletions(-) -Index: libosmo-sccp-1.4.0/configure.ac +Index: libosmo-sccp-1.6.0/configure.ac =================================================================== ---- libosmo-sccp-1.4.0.orig/configure.ac -+++ libosmo-sccp-1.4.0/configure.ac +--- libosmo-sccp-1.6.0.orig/configure.ac ++++ libosmo-sccp-1.6.0/configure.ac @@ -36,6 +36,7 @@ if test "x$PKG_CONFIG_INSTALLED" = "xno" fi PKG_PROG_PKG_CONFIG([0.20]) +PKG_CHECK_MODULES([TALLOC], [talloc]) - PKG_CHECK_MODULES(LIBOSMOCORE, libosmocore >= 1.5.0) - PKG_CHECK_MODULES(LIBOSMOVTY, libosmovty >= 1.5.0) - PKG_CHECK_MODULES(LIBOSMOGSM, libosmogsm >= 1.5.0) -Index: libosmo-sccp-1.4.0/libosmo-mtp.pc.in + PKG_CHECK_MODULES(LIBOSMOCORE, libosmocore >= 1.7.0) + PKG_CHECK_MODULES(LIBOSMOVTY, libosmovty >= 1.7.0) + PKG_CHECK_MODULES(LIBOSMOGSM, libosmogsm >= 1.7.0) +Index: libosmo-sccp-1.6.0/libosmo-mtp.pc.in =================================================================== ---- libosmo-sccp-1.4.0.orig/libosmo-mtp.pc.in -+++ libosmo-sccp-1.4.0/libosmo-mtp.pc.in +--- libosmo-sccp-1.6.0.orig/libosmo-mtp.pc.in ++++ libosmo-sccp-1.6.0/libosmo-mtp.pc.in @@ -6,5 +6,5 @@ includedir=@includedir@ Name: Osmo MTP Lib Description: Osmo MTP Lib @@ -43,10 +43,10 @@ -Libs: -L${libdir} -lmtp +Libs: -L${libdir} -losmo-mtp Cflags: -I${includedir}/ -Index: libosmo-sccp-1.4.0/libosmo-sccp.pc.in +Index: libosmo-sccp-1.6.0/libosmo-sccp.pc.in =================================================================== ---- libosmo-sccp-1.4.0.orig/libosmo-sccp.pc.in -+++ libosmo-sccp-1.4.0/libosmo-sccp.pc.in +--- libosmo-sccp-1.6.0.orig/libosmo-sccp.pc.in ++++ libosmo-sccp-1.6.0/libosmo-sccp.pc.in @@ -6,5 +6,5 @@ includedir=@includedir@ Name: OpenBSC SCCP Lib Description: OpenBSC SCCP Lib @@ -54,11 +54,11 @@ -Libs: -L${libdir} -lsccp +Libs: -L${libdir} -losmo-sccp Cflags: -I${includedir}/ -Index: libosmo-sccp-1.4.0/src/Makefile.am +Index: libosmo-sccp-1.6.0/src/Makefile.am =================================================================== ---- libosmo-sccp-1.4.0.orig/src/Makefile.am -+++ libosmo-sccp-1.4.0/src/Makefile.am -@@ -7,15 +7,21 @@ noinst_HEADERS = sccp_internal.h xua_asp +--- libosmo-sccp-1.6.0.orig/src/Makefile.am ++++ libosmo-sccp-1.6.0/src/Makefile.am +@@ -7,15 +7,21 @@ noinst_HEADERS = sccp_internal.h ss7_int # Legacy static libs sccpdir = $(libdir) @@ -93,20 +93,20 @@ +noinst_LTLIBRARIES = libosmo-sigtran-internal.la +libosmo_sigtran_internal_la_SOURCES = $(libosmo_sigtran_la_SOURCES) +libosmo_sigtran_internal_la_LIBADD = $(libosmo_sigtran_la_LIBADD) -Index: libosmo-sccp-1.4.0/tests/m2ua/Makefile.am +Index: libosmo-sccp-1.6.0/tests/m2ua/Makefile.am =================================================================== ---- libosmo-sccp-1.4.0.orig/tests/m2ua/Makefile.am -+++ libosmo-sccp-1.4.0/tests/m2ua/Makefile.am +--- libosmo-sccp-1.6.0.orig/tests/m2ua/Makefile.am ++++ libosmo-sccp-1.6.0/tests/m2ua/Makefile.am @@ -5,4 +5,4 @@ EXTRA_DIST = m2ua_test.ok - noinst_PROGRAMS = m2ua_test + check_PROGRAMS = m2ua_test m2ua_test_SOURCES = m2ua_test.c -m2ua_test_LDADD = $(top_builddir)/src/libxua.a $(LIBOSMOCORE_LIBS) +m2ua_test_LDADD = $(top_builddir)/src/libosmo-xua.la $(LIBOSMOCORE_LIBS) ${TALLOC_LIBS} -Index: libosmo-sccp-1.4.0/tests/sccp/Makefile.am +Index: libosmo-sccp-1.6.0/tests/sccp/Makefile.am =================================================================== ---- libosmo-sccp-1.4.0.orig/tests/sccp/Makefile.am -+++ libosmo-sccp-1.4.0/tests/sccp/Makefile.am +--- libosmo-sccp-1.6.0.orig/tests/sccp/Makefile.am ++++ libosmo-sccp-1.6.0/tests/sccp/Makefile.am @@ -1,13 +1,13 @@ -AM_CPPFLAGS = $(all_includes) -I$(top_srcdir)/include +AM_CPPFLAGS = $(all_includes) -I$(top_srcdir)/include ${TALLOC_CFLAGS} @@ -114,7 +114,7 @@ EXTRA_DIST = sccp_test.ok - noinst_PROGRAMS = sccp_test + check_PROGRAMS = sccp_test -sccp_test_SOURCES = sccp_test.c +sccp_test_SOURCES = sccp_test.c ${top_srcdir}/src/sccp.c @@ -124,10 +124,10 @@ + ${TALLOC_LIBS} \ $(NULL) -Index: libosmo-sccp-1.4.0/tests/ss7/Makefile.am +Index: libosmo-sccp-1.6.0/tests/ss7/Makefile.am =================================================================== ---- libosmo-sccp-1.4.0.orig/tests/ss7/Makefile.am -+++ libosmo-sccp-1.4.0/tests/ss7/Makefile.am +--- libosmo-sccp-1.6.0.orig/tests/ss7/Makefile.am ++++ libosmo-sccp-1.6.0/tests/ss7/Makefile.am @@ -1,7 +1,5 @@ AM_CPPFLAGS = $(all_includes) -I$(top_srcdir)/include -Wall AM_CFLAGS=-Wall $(LIBOSMOCORE_CFLAGS) $(LIBOSMOVTY_CFLAGS) @@ -136,10 +136,10 @@ LDADD = $(top_builddir)/src/libosmo-sigtran.la \ $(LIBOSMOCORE_LIBS) $(LIBOSMOVTY_LIBS) $(LIBOSMONETIF_LIBS) $(LIBSCTP_LIBS) -Index: libosmo-sccp-1.4.0/tests/xua/Makefile.am +Index: libosmo-sccp-1.6.0/tests/xua/Makefile.am =================================================================== ---- libosmo-sccp-1.4.0.orig/tests/xua/Makefile.am -+++ libosmo-sccp-1.4.0/tests/xua/Makefile.am +--- libosmo-sccp-1.6.0.orig/tests/xua/Makefile.am ++++ libosmo-sccp-1.6.0/tests/xua/Makefile.am @@ -1,8 +1,6 @@ -AM_CPPFLAGS = $(all_includes) -I$(top_srcdir)/include -Wall +AM_CPPFLAGS = $(all_includes) -I$(top_srcdir)/include -Wall $(LIBOSMOCORE_CFLAGS) $(LIBOSMOVTY_CFLAGS) $(LIBOSMONETIF_CFLAGS) $(LIBSCTP_CFLAGS) ++++++ 1.5.0.tar.gz -> 1.6.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/README.md new/libosmo-sccp-1.6.0/README.md --- old/libosmo-sccp-1.5.0/README.md 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/README.md 2022-06-28 18:22:14.000000000 +0200 @@ -20,10 +20,9 @@ You can clone from the official git repository using - git clone git://git.osmocom.org/libosmo-sccp.git - git clone https://git.osmocom.org/libosmo-sccp.git + git clone https://gitea.osmocom.org/osmocom/libosmo-sccp -There is a cgit interface at https://git.osmocom.org/libosmo-sccp/ +There is a web interface at <https://gitea.osmocom.org/osmocom/libosmo-sccp> Documentation ------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/configure.ac new/libosmo-sccp-1.6.0/configure.ac --- old/libosmo-sccp-1.5.0/configure.ac 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/configure.ac 2022-06-28 18:22:14.000000000 +0200 @@ -36,10 +36,10 @@ fi PKG_PROG_PKG_CONFIG([0.20]) -PKG_CHECK_MODULES(LIBOSMOCORE, libosmocore >= 1.5.0) -PKG_CHECK_MODULES(LIBOSMOVTY, libosmovty >= 1.5.0) -PKG_CHECK_MODULES(LIBOSMOGSM, libosmogsm >= 1.5.0) -PKG_CHECK_MODULES(LIBOSMONETIF, libosmo-netif >= 1.1.0) +PKG_CHECK_MODULES(LIBOSMOCORE, libosmocore >= 1.7.0) +PKG_CHECK_MODULES(LIBOSMOVTY, libosmovty >= 1.7.0) +PKG_CHECK_MODULES(LIBOSMOGSM, libosmogsm >= 1.7.0) +PKG_CHECK_MODULES(LIBOSMONETIF, libosmo-netif >= 1.2.0) old_LIBS=$LIBS AC_SEARCH_LIBS([sctp_recvmsg], [sctp], [ @@ -170,7 +170,7 @@ AM_PATH_PYTHON AC_CHECK_PROG(OSMOTESTEXT_CHECK,osmo_verify_transcript_vty.py,yes) if test "x$OSMOTESTEXT_CHECK" != "xyes" ; then - AC_MSG_ERROR([Please install git://osmocom.org/python/osmo-python-tests to run the VTY/CTRL tests.]) + AC_MSG_ERROR([Please install https://gitea.osmocom.org/cellular-infrastructure/osmo-python-tests to run the VTY/CTRL tests.]) fi fi AC_MSG_CHECKING([whether to enable VTY/CTRL tests]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/contrib/libosmo-sccp.spec.in new/libosmo-sccp-1.6.0/contrib/libosmo-sccp.spec.in --- old/libosmo-sccp-1.5.0/contrib/libosmo-sccp.spec.in 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/contrib/libosmo-sccp.spec.in 2022-06-28 18:22:14.000000000 +0200 @@ -34,10 +34,10 @@ BuildRequires: systemd-rpm-macros %endif BuildRequires: xz -BuildRequires: pkgconfig(libosmo-netif) >= 1.1.0 -BuildRequires: pkgconfig(libosmocore) >= 1.5.0 -BuildRequires: pkgconfig(libosmogsm) >= 1.5.0 -BuildRequires: pkgconfig(libosmovty) >= 1.5.0 +BuildRequires: pkgconfig(libosmo-netif) >= 1.2.0 +BuildRequires: pkgconfig(libosmocore) >= 1.7.0 +BuildRequires: pkgconfig(libosmogsm) >= 1.7.0 +BuildRequires: pkgconfig(libosmovty) >= 1.7.0 %{?systemd_requires} %description diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/contrib/test/test-m3ua.sh new/libosmo-sccp-1.6.0/contrib/test/test-m3ua.sh --- old/libosmo-sccp-1.5.0/contrib/test/test-m3ua.sh 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/contrib/test/test-m3ua.sh 2022-06-28 18:22:14.000000000 +0200 @@ -3,7 +3,7 @@ # this script executes m3ua-testtool against osmo-stp. It assumes that # it is called from within libosmo-sccp/contrib/test and also assumes # that adjacent to the libosmo-sccp, there's a check-out of -# git://git.osmocom.org/nplab/m3ua-testtool +# https://gitea.osmocom.org/nplab/m3ua-testtool # the top of the libosmo-sccp git repository TOPDIR=../../ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/contrib/test/test-sua.sh new/libosmo-sccp-1.6.0/contrib/test/test-sua.sh --- old/libosmo-sccp-1.5.0/contrib/test/test-sua.sh 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/contrib/test/test-sua.sh 2022-06-28 18:22:14.000000000 +0200 @@ -3,7 +3,7 @@ # this script executes m3ua-testtool against osmo-stp. It assumes that # it is called from within libosmo-sccp/contrib/test and also assumes # that adjacent to the libosmo-sccp, there's a check-out of -# git://git.osmocom.org/nplab/m3ua-testtool +# https://gitea.osmocom.org/nplab/sua-testtool # the top of the libosmo-sccp git repository TOPDIR=../../ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/debian/changelog new/libosmo-sccp-1.6.0/debian/changelog --- old/libosmo-sccp-1.5.0/debian/changelog 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/debian/changelog 2022-06-28 18:22:14.000000000 +0200 @@ -1,3 +1,37 @@ +libosmo-sccp (1.6.0) unstable; urgency=medium + + [ Pau Espin Pedrol ] + * ss7: Use sctp value_string from libosmo-netif + * xua_default_lm_fsm.c: Fix typo in comment + * xua_asp_fsm: Fix gcc false positive warning + * Add ss7 instances to osmo_ss7_instances in creation order + + [ Oliver Smith ] + * treewide: remove FSF address + * src/sccp_scmg: fix typo + * osmo_ss7_instance_destroy: use for_each_entry_safe + * include/osmocom/sigtran/sccp_sap.h: cosmetic fixes + * osmo_ss7_vty: add osmo_sccp_addr_by_name_local + + [ Philipp Maier ] + * sccp_user: do not force the role ASP when configured differently + + [ Harald Welte ] + * sccp_demo_user: Add command line argument to specify protocol (m3ua/ipa) + * sccp_demo_user: Add 'show stats' to VTY + * sccp_demo_user: make sure the command-line specified point codes are used + * sccp_demo_user: Allow user to specify logmask on command line + * sccp_demo_user: enable stats / rate_counter timers + * M3UA/SUA: Implement handling of SCON (signaling congestion) + * [cosmetic] sccp_scoc.c: fix comments about corresponding SCCP msg types + * [cosmetic] sccp_scoc: Fix typo in comment + * update git URLs (git -> https; gitea) + + [ Vadim Yanitskiy ] + * tests: use 'check_PROGRAMS' instead of 'noinst_PROGRAMS' + + -- Pau Espin Pedrol <pes...@sysmocom.de> Tue, 28 Jun 2022 18:22:13 +0200 + libosmo-sccp (1.5.0) unstable; urgency=medium [ Harald Welte ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/debian/control new/libosmo-sccp-1.6.0/debian/control --- old/libosmo-sccp-1.5.0/debian/control 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/debian/control 2022-06-28 18:22:14.000000000 +0200 @@ -5,7 +5,7 @@ Build-Depends: debhelper (>= 9), autotools-dev, pkg-config, - libosmocore-dev (>= 1.5.0), + libosmocore-dev (>= 1.7.0), autoconf, automake, libtool, @@ -13,12 +13,12 @@ git, doxygen, libdpkg-perl, - libosmo-netif-dev (>= 1.1.0), + libosmo-netif-dev (>= 1.2.0), libsctp-dev, - osmo-gsm-manuals-dev (>= 1.1.0) + osmo-gsm-manuals-dev (>= 1.3.0) Standards-Version: 3.9.7 -Vcs-Git: git://git.osmocom.org/libosmo-sccp.git -Vcs-Browser: http://git.osmocom.org/libosmo-sccp/ +Vcs-Git: https://gitea.osmocom.org/osmocom/libosmo-sccp +Vcs-Browser: https://gitea.osmocom.org/osmocom/libosmo-sccp Homepage: https://projects.osmocom.org/projects/libosmo-sccp Package: libosmo-sccp-dev diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/examples/internal.h new/libosmo-sccp-1.6.0/examples/internal.h --- old/libosmo-sccp-1.5.0/examples/internal.h 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/examples/internal.h 2022-06-28 18:22:14.000000000 +0200 @@ -12,6 +12,9 @@ struct osmo_sccp_user; +extern struct osmo_sccp_addr g_calling_addr; +extern struct osmo_sccp_addr g_called_addr; + int sccp_test_user_vty_install(struct osmo_sccp_instance *inst, int ssn); int sccp_test_server_init(struct osmo_sccp_instance *sccp); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/examples/sccp_demo_user.c new/libosmo-sccp-1.6.0/examples/sccp_demo_user.c --- old/libosmo-sccp-1.5.0/examples/sccp_demo_user.c 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/examples/sccp_demo_user.c 2022-06-28 18:22:14.000000000 +0200 @@ -11,9 +11,12 @@ #include <osmocom/core/logging.h> #include <osmocom/core/application.h> #include <osmocom/core/fsm.h> +#include <osmocom/core/stats.h> +#include <osmocom/core/rate_ctr.h> #include <osmocom/vty/vty.h> #include <osmocom/vty/telnet_interface.h> #include <osmocom/vty/logging.h> +#include <osmocom/vty/stats.h> #include <osmocom/vty/misc.h> #include <osmocom/sigtran/osmo_ss7.h> @@ -28,16 +31,17 @@ static struct osmo_sccp_instance *g_sccp; -static struct osmo_sccp_instance *sua_server_helper(int local_port, const char *local_address, int local_pc, +static struct osmo_sccp_instance *sua_server_helper(enum osmo_ss7_asp_protocol protocol, + int local_port, const char *local_address, int local_pc, int remote_port, const char *remote_address, int remote_pc) { struct osmo_sccp_instance *sccp; - sccp = osmo_sccp_simple_server(NULL, local_pc, OSMO_SS7_ASP_PROT_M3UA, local_port, local_address); + sccp = osmo_sccp_simple_server(NULL, local_pc, protocol, local_port, local_address); if (sccp == NULL) return NULL; - osmo_sccp_simple_server_add_clnt(sccp, OSMO_SS7_ASP_PROT_M3UA, "client", remote_pc, local_port, + osmo_sccp_simple_server_add_clnt(sccp, protocol, "client", remote_pc, local_port, remote_port, remote_address); return sccp; @@ -110,6 +114,7 @@ " [-r REMOTE_ADDRESS[:REMOTE_PORT]]\n" " [-L LOCAL_POINT_CODE] [-R REMOTE_POINT_CODE]\n" "Options:\n" + " -p: protocol to use (m3ua, sua, ipa; default is ipa)\n" " -c: Run in client mode (default is server mode)\n" " -l: local IP address and SCTP port (default is %s:%d in server mode,\n" " %s:%d in client mode)\n" @@ -117,6 +122,7 @@ " %s:%d in client mode)\n" " -L: local point code (default is %d in server mode, %d in client mode)\n" " -R: remote point code (default is %d in server mode, %d in client mode)\n", + " -d: LOGMASK (libosmocore log mask string, e.g. -d DLINP,1:DLSS7,2)\n" DEFAULT_LOCAL_ADDRESS_SERVER, DEFAULT_LOCAL_PORT_SERVER, DEFAULT_LOCAL_ADDRESS_CLIENT, DEFAULT_LOCAL_PORT_CLIENT, DEFAULT_REMOTE_ADDRESS_SERVER, DEFAULT_REMOTE_PORT_SERVER, @@ -179,9 +185,19 @@ int remote_port = DEFAULT_REMOTE_PORT_SERVER; int remote_pc = DEFAULT_PC_CLIENT; bool lflag = false, rflag = false, Lflag = false, Rflag = false; + enum osmo_ss7_asp_protocol protocol = OSMO_SS7_ASP_PROT_M3UA; - while ((ch = getopt(argc, argv, "cl:r:L:R:C:")) != -1) { + void *tall_ctx = talloc_named_const(NULL, 1, "sccp_demo_user"); + init_logging(tall_ctx); + + while ((ch = getopt(argc, argv, "p:cl:r:L:R:C:d:")) != -1) { switch (ch) { + case 'p': + rc = get_string_value(osmo_ss7_asp_protocol_vals, optarg); + if (rc < 0) + exit(1); + protocol = rc; + break; case 'c': client = true; @@ -228,6 +244,9 @@ case 'C': config_file = optarg; break; + case 'd': + log_parse_category_mask(osmo_stderr_target, optarg); + break; default: usage(); } @@ -243,14 +262,15 @@ signal(SIGUSR1, &signal_handler); signal(SIGUSR2, &signal_handler); - void *tall_ctx = talloc_named_const(NULL, 1, "sccp_demo_user"); - init_logging(tall_ctx); + osmo_stats_init(tall_ctx); + rate_ctr_init(tall_ctx); OSMO_ASSERT(osmo_ss7_init() == 0); osmo_fsm_log_addr(false); vty_info.tall_ctx = tall_ctx; vty_init(&vty_info); logging_vty_add_cmds(); osmo_talloc_vty_add_cmds(); + osmo_stats_vty_add_cmds(); osmo_fsm_vty_add_cmds(); osmo_ss7_vty_init_asp(NULL); osmo_sccp_vty_init(); @@ -273,7 +293,7 @@ } if (client) { - g_sccp = osmo_sccp_simple_client(NULL, "client", local_pc, OSMO_SS7_ASP_PROT_M3UA, + g_sccp = osmo_sccp_simple_client(NULL, "client", local_pc, protocol, local_port, local_address, remote_port, remote_address); if (g_sccp == NULL) { perror("Could not create SCCP client"); @@ -281,7 +301,7 @@ } sccp_test_user_vty_install(g_sccp, OSMO_SCCP_SSN_BSSAP); } else { - g_sccp = sua_server_helper(local_port, local_address, local_pc, + g_sccp = sua_server_helper(protocol, local_port, local_address, local_pc, remote_port, remote_address, remote_pc); if (g_sccp == NULL) { perror("Could not create SCCP server"); @@ -289,6 +309,8 @@ } sccp_test_server_init(g_sccp); } + g_calling_addr.pc = local_pc; + g_called_addr.pc = remote_pc; while (1) { osmo_select_main(0); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/examples/sccp_test_vty.c new/libosmo-sccp-1.6.0/examples/sccp_test_vty.c --- old/libosmo-sccp-1.5.0/examples/sccp_test_vty.c 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/examples/sccp_test_vty.c 2022-06-28 18:22:14.000000000 +0200 @@ -13,13 +13,13 @@ static struct osmo_sccp_user *g_scu; -static struct osmo_sccp_addr g_calling_addr = { +struct osmo_sccp_addr g_calling_addr = { .presence = OSMO_SCCP_ADDR_T_SSN | OSMO_SCCP_ADDR_T_PC, .ri = OSMO_SCCP_RI_SSN_PC, .pc = 23, }; -static struct osmo_sccp_addr g_called_addr = { +struct osmo_sccp_addr g_called_addr = { .presence = OSMO_SCCP_ADDR_T_SSN | OSMO_SCCP_ADDR_T_PC, .ssn = 1, .ri = OSMO_SCCP_RI_SSN_PC, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/include/osmocom/mtp/mtp_level3.h new/libosmo-sccp-1.6.0/include/osmocom/mtp/mtp_level3.h --- old/libosmo-sccp-1.5.0/include/osmocom/mtp/mtp_level3.h 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/include/osmocom/mtp/mtp_level3.h 2022-06-28 18:22:14.000000000 +0200 @@ -14,10 +14,6 @@ * 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, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * */ #pragma once diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/include/osmocom/mtp/mtp_pcap.h new/libosmo-sccp-1.6.0/include/osmocom/mtp/mtp_pcap.h --- old/libosmo-sccp-1.5.0/include/osmocom/mtp/mtp_pcap.h 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/include/osmocom/mtp/mtp_pcap.h 2022-06-28 18:22:14.000000000 +0200 @@ -13,10 +13,6 @@ * 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, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * */ #ifndef mtp_pcap_h #define mtp_pcap_h diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/include/osmocom/sccp/sccp.h new/libosmo-sccp-1.6.0/include/osmocom/sccp/sccp.h --- old/libosmo-sccp-1.5.0/include/osmocom/sccp/sccp.h 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/include/osmocom/sccp/sccp.h 2022-06-28 18:22:14.000000000 +0200 @@ -16,10 +16,6 @@ * 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, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * */ #ifndef SCCP_H diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/include/osmocom/sccp/sccp_types.h new/libosmo-sccp-1.6.0/include/osmocom/sccp/sccp_types.h --- old/libosmo-sccp-1.5.0/include/osmocom/sccp/sccp_types.h 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/include/osmocom/sccp/sccp_types.h 2022-06-28 18:22:14.000000000 +0200 @@ -15,10 +15,6 @@ * 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, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * */ #ifndef SCCP_TYPES_H diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/include/osmocom/sigtran/sccp_sap.h new/libosmo-sccp-1.6.0/include/osmocom/sigtran/sccp_sap.h --- old/libosmo-sccp-1.5.0/include/osmocom/sigtran/sccp_sap.h 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/include/osmocom/sigtran/sccp_sap.h 2022-06-28 18:22:14.000000000 +0200 @@ -281,8 +281,7 @@ void osmo_sccp_vty_init(void); -struct osmo_sccp_instance * -osmo_sccp_instance_create(struct osmo_ss7_instance *ss7, void *priv); +struct osmo_sccp_instance *osmo_sccp_instance_create(struct osmo_ss7_instance *ss7, void *priv); void osmo_sccp_instance_destroy(struct osmo_sccp_instance *inst); struct osmo_ss7_instance *osmo_sccp_get_ss7(const struct osmo_sccp_instance *sccp); struct osmo_sccp_instance *osmo_sccp_get_sccp(const struct osmo_sccp_user *scu); @@ -291,22 +290,19 @@ void osmo_sccp_user_set_priv(struct osmo_sccp_user *scu, void *priv); void *osmo_sccp_user_get_priv(struct osmo_sccp_user *scu); -struct osmo_sccp_user * -osmo_sccp_user_bind_pc(struct osmo_sccp_instance *inst, const char *name, - osmo_prim_cb prim_cb, uint16_t ssn, uint32_t pc); - -struct osmo_sccp_user * -osmo_sccp_user_bind(struct osmo_sccp_instance *inst, const char *name, - osmo_prim_cb prim_cb, uint16_t ssn); -struct osmo_sccp_user * -osmo_sccp_user_find(struct osmo_sccp_instance *inst, uint16_t ssn, uint32_t pc); +struct osmo_sccp_user *osmo_sccp_user_bind_pc(struct osmo_sccp_instance *inst, const char *name, + osmo_prim_cb prim_cb, uint16_t ssn, uint32_t pc); + +struct osmo_sccp_user *osmo_sccp_user_bind(struct osmo_sccp_instance *inst, const char *name, + osmo_prim_cb prim_cb, uint16_t ssn); +struct osmo_sccp_user *osmo_sccp_user_find(struct osmo_sccp_instance *inst, uint16_t ssn, uint32_t pc); int osmo_sccp_user_sap_down(struct osmo_sccp_user *scu, struct osmo_prim_hdr *oph); int osmo_sccp_user_sap_down_nofree(struct osmo_sccp_user *scu, struct osmo_prim_hdr *oph); -struct osmo_ss7_instance * -osmo_sccp_addr_by_name(struct osmo_sccp_addr *dest_addr, - const char *name); +struct osmo_ss7_instance *osmo_sccp_addr_by_name(struct osmo_sccp_addr *dest_addr, const char *name); +int osmo_sccp_addr_by_name_local(struct osmo_sccp_addr *dest_addr, const char *name, + const struct osmo_ss7_instance *inst); const char *osmo_sccp_name_by_addr(const struct osmo_sccp_addr *addr); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/src/Makefile.am new/libosmo-sccp-1.6.0/src/Makefile.am --- old/libosmo-sccp-1.5.0/src/Makefile.am 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/src/Makefile.am 2022-06-28 18:22:14.000000000 +0200 @@ -25,7 +25,7 @@ # This is _NOT_ the library release version, it's an API version. # Please read Chapter 6 "Library interface versions" of the libtool # documentation before making any modification -LIBVERSION=7:0:0 +LIBVERSION=7:1:0 libosmo_sigtran_la_SOURCES = sccp_sap.c sua.c m3ua.c xua_msg.c sccp_helpers.c \ sccp2sua.c sccp_scrc.c sccp_sclc.c sccp_scoc.c \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/src/m3ua.c new/libosmo-sccp-1.6.0/src/m3ua.c --- old/libosmo-sccp-1.5.0/src/m3ua.c 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/src/m3ua.c 2022-06-28 18:22:14.000000000 +0200 @@ -864,6 +864,40 @@ xua_msg_free(xua); } +/*! Transmit SSNM SCON message indicating congestion + * \param[in] asp ASP through which to transmit message. Must be ACTIVE. + * \param[in] rctx array of Routing Contexts in network byte order. + * \param[in] num_rctx number of rctx + * \param[in] aff_pc array of 'Affected Point Code' in network byte order. + * \param[in] num_aff_pc number of aff_pc + * \param[in] concerned_dpc optional concerned DPC (can be NULL) + * \param[in] cong_level optional congestion level (can be NULL) + * \param[in] info_string optional information string (can be NULL). */ +void m3ua_tx_snm_congestion(struct osmo_ss7_asp *asp, const uint32_t *rctx, unsigned int num_rctx, + const uint32_t *aff_pc, unsigned int num_aff_pc, + const uint32_t *concerned_dpc, const uint8_t *cong_level, + const char *info_string) +{ + struct xua_msg *xua = xua_msg_alloc(); + + xua->hdr = XUA_HDR(M3UA_MSGC_SNM, M3UA_SNM_SCON); + xua->hdr.version = M3UA_VERSION; + if (rctx) + xua_msg_add_data(xua, M3UA_IEI_ROUTE_CTX, num_rctx * sizeof(*rctx), (const uint8_t *)rctx); + + xua_msg_add_data(xua, M3UA_IEI_AFFECTED_PC, num_aff_pc * sizeof(*aff_pc), (const uint8_t *) aff_pc); + + if (concerned_dpc) + xua_msg_add_u32(xua, M3UA_IEI_CONC_DEST, *concerned_dpc & 0xffffff); + if (cong_level) + xua_msg_add_u32(xua, M3UA_IEI_CONG_IND, *cong_level & 0xff); + if (info_string) + xua_msg_add_data(xua, M3UA_IEI_INFO_STRING, strlen(info_string)+1, (const uint8_t *) info_string); + + m3ua_tx_xua_asp(asp, xua); + xua_msg_free(xua); +} + /*! Transmit SSNM DUPU message indicating user unavailability. * \param[in] asp ASP through which to transmit message. Must be ACTIVE. * \param[in] rctx array of Routing Contexts in network byte order. @@ -903,6 +937,8 @@ xua_snm_rx_dupu(asp, as, xua); break; case M3UA_SNM_SCON: + xua_snm_rx_scon(asp, as, xua); + break; case M3UA_SNM_DRST: LOGPASP(asp, DLM3UA, LOGL_NOTICE, "Received unsupported M3UA SNM message type %u\n", xua->hdr.msg_type); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/src/mtp_pcap.c new/libosmo-sccp-1.6.0/src/mtp_pcap.c --- old/libosmo-sccp-1.5.0/src/mtp_pcap.c 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/src/mtp_pcap.c 2022-06-28 18:22:14.000000000 +0200 @@ -16,10 +16,6 @@ * 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, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * */ #include <osmocom/mtp/mtp_pcap.h> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/src/osmo_ss7.c new/libosmo-sccp-1.6.0/src/osmo_ss7.c --- old/libosmo-sccp-1.5.0/src/osmo_ss7.c 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/src/osmo_ss7.c 2022-06-28 18:22:14.000000000 +0200 @@ -45,6 +45,7 @@ #include <osmocom/netif/stream.h> #include <osmocom/netif/ipa.h> +#include <osmocom/netif/sctp.h> #include "sccp_internal.h" #include "xua_internal.h" @@ -398,7 +399,7 @@ inst->cfg.pc_fmt.component_len[1] = 8; inst->cfg.pc_fmt.component_len[2] = 3; - llist_add(&inst->list, &osmo_ss7_instances); + llist_add_tail(&inst->list, &osmo_ss7_instances); INIT_LLIST_HEAD(&inst->cfg.sccp_address_book); @@ -409,20 +410,20 @@ * \param[in] inst SS7 Instance to be destroyed */ void osmo_ss7_instance_destroy(struct osmo_ss7_instance *inst) { - struct osmo_ss7_linkset *lset; - struct osmo_ss7_as *as; - struct osmo_ss7_asp *asp; + struct osmo_ss7_linkset *lset, *lset2; + struct osmo_ss7_as *as, *as2; + struct osmo_ss7_asp *asp, *asp2; OSMO_ASSERT(ss7_initialized); LOGSS7(inst, LOGL_INFO, "Destroying SS7 Instance\n"); - llist_for_each_entry(asp, &inst->asp_list, list) + llist_for_each_entry_safe(asp, asp2, &inst->asp_list, list) osmo_ss7_asp_destroy(asp); - llist_for_each_entry(as, &inst->as_list, list) + llist_for_each_entry_safe(as, as2, &inst->as_list, list) osmo_ss7_as_destroy(as); - llist_for_each_entry(lset, &inst->linksets, list) + llist_for_each_entry_safe(lset, lset2, &inst->linksets, list) osmo_ss7_linkset_destroy(lset); llist_del(&inst->list); @@ -1663,32 +1664,6 @@ * libosmo-netif integration for SCTP stream server/client ***********************************************************************/ -static const struct value_string sctp_assoc_chg_vals[] = { - { SCTP_COMM_UP, "COMM_UP" }, - { SCTP_COMM_LOST, "COMM_LOST" }, - { SCTP_RESTART, "RESTART" }, - { SCTP_SHUTDOWN_COMP, "SHUTDOWN_COMP" }, - { SCTP_CANT_STR_ASSOC, "CANT_STR_ASSOC" }, - { 0, NULL } -}; - -static const struct value_string sctp_sn_type_vals[] = { - { SCTP_ASSOC_CHANGE, "ASSOC_CHANGE" }, - { SCTP_PEER_ADDR_CHANGE, "PEER_ADDR_CHANGE" }, - { SCTP_SHUTDOWN_EVENT, "SHUTDOWN_EVENT" }, - { SCTP_SEND_FAILED, "SEND_FAILED" }, - { SCTP_REMOTE_ERROR, "REMOTE_ERROR" }, - { SCTP_PARTIAL_DELIVERY_EVENT, "PARTIAL_DELIVERY_EVENT" }, - { SCTP_ADAPTATION_INDICATION, "ADAPTATION_INDICATION" }, -#ifdef SCTP_AUTHENTICATION_INDICATION - { SCTP_AUTHENTICATION_INDICATION, "AUTHENTICATION_INDICATION" }, -#endif -#ifdef SCTP_SENDER_DRY_EVENT - { SCTP_SENDER_DRY_EVENT, "SENDER_DRY_EVENT" }, -#endif - { 0, NULL } -}; - static int get_logevel_by_sn_type(int sn_type) { switch (sn_type) { @@ -1728,13 +1703,11 @@ switch (notif->sn_header.sn_type) { case SCTP_ASSOC_CHANGE: LOGPASP(asp, DLSS7, log_level, "%s SCTP_ASSOC_CHANGE: %s\n", - pfx, get_value_string(sctp_assoc_chg_vals, - notif->sn_assoc_change.sac_state)); + pfx, osmo_sctp_assoc_chg_str(notif->sn_assoc_change.sac_state)); break; default: LOGPASP(asp, DLSS7, log_level, "%s %s\n", - pfx, get_value_string(sctp_sn_type_vals, - notif->sn_header.sn_type)); + pfx, osmo_sctp_sn_type_str(notif->sn_header.sn_type)); break; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/src/osmo_ss7_vty.c new/libosmo-sccp-1.6.0/src/osmo_ss7_vty.c --- old/libosmo-sccp-1.5.0/src/osmo_ss7_vty.c 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/src/osmo_ss7_vty.c 2022-06-28 18:22:14.000000000 +0200 @@ -1350,6 +1350,28 @@ return entry->inst; } +/*! \brief Lookup an SCCP address from the addressbook of a specific instance + * by its name. + * \param[out] dest_addr pointer to output the resulting sccp-address; + * (set to NULL if not interested) + * \param[in] name of the address to lookup + * \param[in] inst ss7 instance of which the address book will be searched + * \returns 0 on success; <0 on error */ +int osmo_sccp_addr_by_name_local(struct osmo_sccp_addr *dest_addr, const char *name, + const struct osmo_ss7_instance *inst) +{ + struct osmo_sccp_addr_entry *entry; + + entry = addr_entry_by_name_local(name, inst); + if (!entry) + return -ENOENT; + + if (dest_addr) + *dest_addr = entry->addr; + + return 0; +} + /*! \brief Reverse lookup the lookup-name of a specified SCCP address. * \param[in] name of the address to lookup * \returns char pointer to the lookup-name; NULL on error */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/src/sccp.c new/libosmo-sccp-1.6.0/src/sccp.c --- old/libosmo-sccp-1.5.0/src/sccp.c 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/src/sccp.c 2022-06-28 18:22:14.000000000 +0200 @@ -18,10 +18,6 @@ * 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, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * */ #include <string.h> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/src/sccp_scmg.c new/libosmo-sccp-1.6.0/src/sccp_scmg.c --- old/libosmo-sccp-1.5.0/src/sccp_scmg.c 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/src/sccp_scmg.c 2022-06-28 18:22:14.000000000 +0200 @@ -308,7 +308,7 @@ int sccp_scmg_init(struct osmo_sccp_instance *inst) { struct osmo_sccp_user *scu; - scu = osmo_sccp_user_bind(inst, "SCCP Maangement", scmg_prim_cb, SCCP_SSN_MANAGEMENT); + scu = osmo_sccp_user_bind(inst, "SCCP Management", scmg_prim_cb, SCCP_SSN_MANAGEMENT); if (!scu) return -1; return 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/src/sccp_scoc.c new/libosmo-sccp-1.6.0/src/sccp_scoc.c --- old/libosmo-sccp-1.5.0/src/sccp_scoc.c 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/src/sccp_scoc.c 2022-06-28 18:22:14.000000000 +0200 @@ -615,7 +615,7 @@ xua_msg_add_data(xua, SUA_IEI_DATA, msgb_l2len(prim->oph.msg), msgb_l2(prim->oph.msg)); break; - case SUA_CO_RELRE: /* Release Request == SCCP REL */ + case SUA_CO_RELRE: /* Release Request == SCCP RLSD */ if (!prim) goto prim_needed; xua->hdr = XUA_HDR(SUA_MSGC_CO, SUA_CO_RELRE); @@ -628,7 +628,7 @@ xua_msg_add_data(xua, SUA_IEI_DATA, msgb_l2len(prim->oph.msg), msgb_l2(prim->oph.msg)); break; - case SUA_CO_RELCO: /* Release Confirm == SCCP RLSD */ + case SUA_CO_RELCO: /* Release Confirm == SCCP RLC */ xua->hdr = XUA_HDR(SUA_MSGC_CO, SUA_CO_RELCO); xua_msg_add_u32(xua, SUA_IEI_ROUTE_CTX, conn->inst->route_ctx); xua_msg_add_u32(xua, SUA_IEI_DEST_REF, conn->remote_ref); @@ -807,7 +807,7 @@ /*********************************************************************** - * Actual SCCP Connection Oriented Control (SCOC) Finite Stte Machine + * Actual SCCP Connection Oriented Control (SCOC) Finite State Machine ***********************************************************************/ /* Figure C.2/Q.714 (sheet 1 of 7) and C.3/Q.714 (sheet 1 of 6) */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/src/sccp_user.c new/libosmo-sccp-1.6.0/src/sccp_user.c --- old/libosmo-sccp-1.5.0/src/sccp_user.c 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/src/sccp_user.c 2022-06-28 18:22:14.000000000 +0200 @@ -633,7 +633,11 @@ /* Ensure that the ASP we use is set to client mode. */ asp->cfg.is_server = false; - asp->cfg.role = OSMO_SS7_ASP_ROLE_ASP; + + /* Make sure that the role of this ASP is set to ASP unless the user + * made a concious decision about the role via the VTY */ + if (!asp->cfg.role_set_by_vty) + asp->cfg.role = OSMO_SS7_ASP_ROLE_ASP; /* Restart ASP */ if (prot != OSMO_SS7_ASP_PROT_IPA) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/src/sua.c new/libosmo-sccp-1.6.0/src/sua.c --- old/libosmo-sccp-1.5.0/src/sua.c 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/src/sua.c 2022-06-28 18:22:14.000000000 +0200 @@ -875,6 +875,35 @@ sua_tx_xua_asp(asp, xua); } + +/*! Transmit SSNM SCON message indicating congestion + * \param[in] asp ASP through which to transmit message. Must be ACTIVE. + * \param[in] rctx array of Routing Contexts in network byte order. + * \param[in] num_rctx number of rctx + * \param[in] aff_pc array of 'Affected Point Code' in network byte order. + * \param[in] num_aff_pc number of aff_pc + * \param[in] ssn optional SSN (can be NULL) + * \param[in] cong_level optional congestion level (can be NULL) + * \param[in] info_string optional information string (can be NULL). */ +void sua_tx_snm_congestion(struct osmo_ss7_asp *asp, const uint32_t *rctx, unsigned int num_rctx, + const uint32_t *aff_pc, unsigned int num_aff_pc, const uint32_t *ssn, + const uint8_t cong_level, const char *info_string) +{ + struct xua_msg *xua = xua_msg_alloc(); + + xua->hdr = XUA_HDR(SUA_MSGC_SNM, SUA_SNM_SCON); + xua->hdr.version = SUA_VERSION; + if (rctx) + xua_msg_add_data(xua, SUA_IEI_ROUTE_CTX, num_rctx * sizeof(*rctx), (const uint8_t *)rctx); + xua_msg_add_data(xua, SUA_IEI_AFFECTED_PC, num_aff_pc * sizeof(*aff_pc), (const uint8_t *) aff_pc); + if (ssn) + xua_msg_add_u32(xua, SUA_IEI_SSN, *ssn); + xua_msg_add_u32(xua, SUA_IEI_CONG_LEVEL, cong_level); + if (info_string) + xua_msg_add_data(xua, SUA_IEI_INFO_STRING, strlen(info_string)+1, (const uint8_t *) info_string); +} + + /*! Transmit SSNM DUPU message indicating user unavailability. * \param[in] asp ASP through which to transmit message. Must be ACTIVE. * \param[in] rctx array of Routing Contexts in network byte order. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/src/xua_asp_fsm.c new/libosmo-sccp-1.6.0/src/xua_asp_fsm.c --- old/libosmo-sccp-1.5.0/src/xua_asp_fsm.c 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/src/xua_asp_fsm.c 2022-06-28 18:22:14.000000000 +0200 @@ -473,7 +473,6 @@ struct osmo_ss7_as *as; struct xua_msg *xua_in; uint32_t traf_mode = 0; - enum osmo_ss7_as_traffic_mode tmode; struct xua_msg_part *part; int i; @@ -515,7 +514,6 @@ peer_send_error(fi, M3UA_ERR_UNSUPP_TRAF_MOD_TYP); return; } - tmode = osmo_ss7_tmode_from_xua(traf_mode); } if ((part = xua_msg_find_tag(xua_in, M3UA_IEI_ROUTE_CTX))) { for (i = 0; i < part->len / sizeof(uint32_t); i++) { @@ -529,6 +527,7 @@ } if (traf_mode) { /* if the peer has specified a traffic mode at all */ + enum osmo_ss7_as_traffic_mode tmode = osmo_ss7_tmode_from_xua(traf_mode); llist_for_each_entry(as, &asp->inst->as_list, list) { if (!osmo_ss7_as_has_asp(as, asp)) continue; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/src/xua_default_lm_fsm.c new/libosmo-sccp-1.6.0/src/xua_default_lm_fsm.c --- old/libosmo-sccp-1.5.0/src/xua_default_lm_fsm.c 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/src/xua_default_lm_fsm.c 2022-06-28 18:22:14.000000000 +0200 @@ -149,7 +149,7 @@ { switch (event) { case LM_E_ASP_UP_CONF: - /* ASP is sup, wait for some time if any NOTIFY + /* ASP is up, wait for some time if any NOTIFY * indications about AS in this ASP are received */ osmo_fsm_inst_state_chg(fi, S_WAIT_NOTIFY, 2, T_WAIT_NOTIFY); break; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/src/xua_internal.h new/libosmo-sccp-1.6.0/src/xua_internal.h --- old/libosmo-sccp-1.5.0/src/xua_internal.h 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/src/xua_internal.h 2022-06-28 18:22:14.000000000 +0200 @@ -21,6 +21,9 @@ void sua_tx_snm_available(struct osmo_ss7_asp *asp, const uint32_t *rctx, unsigned int num_rctx, const uint32_t *aff_pc, unsigned int num_aff_pc, const uint32_t *aff_ssn, const uint32_t *smi, const char *info_string, bool available); +void sua_tx_snm_congestion(struct osmo_ss7_asp *asp, const uint32_t *rctx, unsigned int num_rctx, + const uint32_t *aff_pc, unsigned int num_aff_pc, const uint32_t *ssn, + const uint8_t cong_level, const char *info_string); void sua_tx_dupu(struct osmo_ss7_asp *asp, const uint32_t *rctx, unsigned int num_rctx, uint32_t dpc, uint16_t user, uint16_t cause, const char *info_str); @@ -30,12 +33,18 @@ void m3ua_tx_snm_available(struct osmo_ss7_asp *asp, const uint32_t *rctx, unsigned int num_rctx, const uint32_t *aff_pc, unsigned int num_aff_pc, const char *info_string, bool available); +void m3ua_tx_snm_congestion(struct osmo_ss7_asp *asp, const uint32_t *rctx, unsigned int num_rctx, + const uint32_t *aff_pc, unsigned int num_aff_pc, + const uint32_t *concerned_dpc, const uint8_t *cong_level, + const char *info_string); void m3ua_tx_dupu(struct osmo_ss7_asp *asp, const uint32_t *rctx, unsigned int num_rctx, uint32_t dpc, uint16_t user, uint16_t cause, const char *info_str); + void xua_snm_rx_daud(struct osmo_ss7_asp *asp, struct xua_msg *xua); void xua_snm_rx_duna(struct osmo_ss7_asp *asp, struct osmo_ss7_as *as, struct xua_msg *xua); void xua_snm_rx_dava(struct osmo_ss7_asp *asp, struct osmo_ss7_as *as, struct xua_msg *xua); void xua_snm_rx_dupu(struct osmo_ss7_asp *asp, struct osmo_ss7_as *as, struct xua_msg *xua); +void xua_snm_rx_scon(struct osmo_ss7_asp *asp, struct osmo_ss7_as *as, struct xua_msg *xua); int m3ua_rx_msg(struct osmo_ss7_asp *asp, struct msgb *msg); struct msgb *m3ua_msgb_alloc(const char *name); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/src/xua_snm.c new/libosmo-sccp-1.6.0/src/xua_snm.c --- old/libosmo-sccp-1.5.0/src/xua_snm.c 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/src/xua_snm.c 2022-06-28 18:22:14.000000000 +0200 @@ -115,6 +115,24 @@ } } +static void xua_tx_scon(struct osmo_ss7_asp *asp, const uint32_t *rctx, unsigned int num_rctx, + const uint32_t *aff_pc, unsigned int num_aff_pc, + const uint32_t *concerned_dpc, const uint8_t *cong_level, + const char *info_string) +{ + switch (asp->cfg.proto) { + case OSMO_SS7_ASP_PROT_M3UA: + m3ua_tx_snm_congestion(asp, rctx, num_rctx, aff_pc, num_aff_pc, + concerned_dpc, cong_level, info_string); + break; + case OSMO_SS7_ASP_PROT_SUA: + sua_tx_snm_congestion(asp, rctx, num_rctx, aff_pc, num_aff_pc, NULL, + cong_level ? *cong_level : 0, info_string); + break; + default: + break; + } +} /* generate MTP-PAUSE / MTP-RESUME towards local SCCP users */ static void xua_snm_pc_available_to_sccp(struct osmo_sccp_instance *sccp, @@ -257,6 +275,36 @@ } } +static void xua_snm_scon(struct osmo_ss7_as *as, const uint32_t *aff_pc, unsigned int num_aff_pc, + const uint32_t *concerned_dpc, const uint8_t *cong_level, const char *info_string) +{ + struct osmo_ss7_instance *s7i = as->inst; + struct osmo_ss7_asp *asp; + uint32_t rctx[32]; + unsigned int num_rctx; + + /* TODO: How to translate to MTP and towards SCCP (create N-PCSTATE.ind to SCU) */ + + /* inform remote ASPs via SCON */ + llist_for_each_entry(asp, &s7i->asp_list, list) { + /* SSNM is only permitted for ASPs in ACTIVE state */ + if (!osmo_ss7_asp_active(asp)) + continue; + + /* only send SCON if we locally are the SG and the remote is ASP */ + if (asp->cfg.role != OSMO_SS7_ASP_ROLE_SG) + continue; + + num_rctx = get_all_rctx_for_asp(rctx, ARRAY_SIZE(rctx), asp, as); + /* this can happen if the given ASP is only in the AS that reports the change, + * which shall be excluded */ + if (num_rctx == 0) + continue; + + xua_tx_scon(asp, rctx, num_rctx, aff_pc, num_aff_pc, concerned_dpc, cong_level, info_string); + } +} + /* receive DAUD from ASP; pc is 'affected PC' IE with mask in network byte order! */ void xua_snm_rx_daud(struct osmo_ss7_asp *asp, struct xua_msg *xua) { @@ -405,3 +453,20 @@ xua_snm_upu(as, aff_pc, user, cause, info_str); } + +/* an incoming SUA/M3UA SCON was received from a remote SG */ +void xua_snm_rx_scon(struct osmo_ss7_asp *asp, struct osmo_ss7_as *as, struct xua_msg *xua) +{ + struct xua_msg_part *ie_aff_pc = xua_msg_find_tag(xua, M3UA_IEI_AFFECTED_PC); + const char *info_str = xua_msg_get_str(xua, M3UA_IEI_INFO_STRING); + uint32_t _concerned_dpc, _cong_level; + const uint32_t *concerned_dpc = xua_msg_get_u32p(xua, M3UA_IEI_CONC_DEST, &_concerned_dpc); + const uint32_t *cong_level = xua_msg_get_u32p(xua, M3UA_IEI_CONG_IND, &_cong_level); + int log_ss = osmo_ss7_asp_get_log_subsys(asp); + + LOGPASP(asp, log_ss, LOGL_NOTICE, "RX SCON(%s) for %s level=%u\n", info_str ? info_str : "", + format_affected_pcs_c(xua, asp->inst, ie_aff_pc), cong_level ? *cong_level : 0); + + xua_snm_scon(as, (const uint32_t *) ie_aff_pc->dat, ie_aff_pc->len / sizeof(uint32_t), + concerned_dpc, (const uint8_t *) cong_level, info_str); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/tests/m2ua/Makefile.am new/libosmo-sccp-1.6.0/tests/m2ua/Makefile.am --- old/libosmo-sccp-1.5.0/tests/m2ua/Makefile.am 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/tests/m2ua/Makefile.am 2022-06-28 18:22:14.000000000 +0200 @@ -3,6 +3,6 @@ EXTRA_DIST = m2ua_test.ok -noinst_PROGRAMS = m2ua_test +check_PROGRAMS = m2ua_test m2ua_test_SOURCES = m2ua_test.c m2ua_test_LDADD = $(top_builddir)/src/libxua.a $(LIBOSMOCORE_LIBS) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/tests/mtp/Makefile.am new/libosmo-sccp-1.6.0/tests/mtp/Makefile.am --- old/libosmo-sccp-1.5.0/tests/mtp/Makefile.am 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/tests/mtp/Makefile.am 2022-06-28 18:22:14.000000000 +0200 @@ -1,5 +1,5 @@ AM_CPPFLAGS = $(all_includes) -I$(top_srcdir)/include $(LIBOSMOCORE_CFLAGS) -Wall -noinst_PROGRAMS = mtp_parse_test +check_PROGRAMS = mtp_parse_test EXTRA_DIST = mtp_parse_test.ok diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/tests/sccp/Makefile.am new/libosmo-sccp-1.6.0/tests/sccp/Makefile.am --- old/libosmo-sccp-1.5.0/tests/sccp/Makefile.am 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/tests/sccp/Makefile.am 2022-06-28 18:22:14.000000000 +0200 @@ -3,7 +3,7 @@ EXTRA_DIST = sccp_test.ok -noinst_PROGRAMS = sccp_test +check_PROGRAMS = sccp_test sccp_test_SOURCES = sccp_test.c sccp_test_LDADD = \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/tests/sccp/sccp_test.c new/libosmo-sccp-1.6.0/tests/sccp/sccp_test.c --- old/libosmo-sccp-1.5.0/tests/sccp/sccp_test.c 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/tests/sccp/sccp_test.c 2022-06-28 18:22:14.000000000 +0200 @@ -16,10 +16,6 @@ * 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, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * */ #include <stdio.h> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/tests/ss7/Makefile.am new/libosmo-sccp-1.6.0/tests/ss7/Makefile.am --- old/libosmo-sccp-1.5.0/tests/ss7/Makefile.am 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/tests/ss7/Makefile.am 2022-06-28 18:22:14.000000000 +0200 @@ -7,6 +7,6 @@ EXTRA_DIST = ss7_test.ok ss7_test.err -noinst_PROGRAMS = ss7_test +check_PROGRAMS = ss7_test ss7_test_SOURCES = ss7_test.c diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/tests/vty/Makefile.am new/libosmo-sccp-1.6.0/tests/vty/Makefile.am --- old/libosmo-sccp-1.5.0/tests/vty/Makefile.am 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/tests/vty/Makefile.am 2022-06-28 18:22:14.000000000 +0200 @@ -10,7 +10,7 @@ vty_test_runner.py \ $(NULL) -noinst_PROGRAMS = ss7_asp_vty_test +check_PROGRAMS = ss7_asp_vty_test ss7_asp_vty_test_SOURCES = ss7_asp_vty_test.c diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/tests/vty/ss7_asp_test.vty new/libosmo-sccp-1.6.0/tests/vty/ss7_asp_test.vty --- old/libosmo-sccp-1.5.0/tests/vty/ss7_asp_test.vty 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/tests/vty/ss7_asp_test.vty 2022-06-28 18:22:14.000000000 +0200 @@ -337,10 +337,6 @@ ss7_asp_vty_test(config)# show running-config ... -cs7 instance 1 - sccp-address bar - routing-indicator PC - point-code 1.2.3 cs7 instance 0 asp my-asp 12345 54321 m3ua local-ip 127.0.0.100 @@ -351,6 +347,10 @@ sccp-address foo routing-indicator PC point-code 1.2.3 +cs7 instance 1 + sccp-address bar + routing-indicator PC + point-code 1.2.3 end ss7_asp_vty_test(config)# do show cs7 instance 0 users diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/tests/vty/ss7_asp_vty_test.c new/libosmo-sccp-1.6.0/tests/vty/ss7_asp_vty_test.c --- old/libosmo-sccp-1.5.0/tests/vty/ss7_asp_vty_test.c 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/tests/vty/ss7_asp_vty_test.c 2022-06-28 18:22:14.000000000 +0200 @@ -15,10 +15,6 @@ * 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, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * */ #define _GNU_SOURCE diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-sccp-1.5.0/tests/xua/Makefile.am new/libosmo-sccp-1.6.0/tests/xua/Makefile.am --- old/libosmo-sccp-1.5.0/tests/xua/Makefile.am 2021-11-16 14:44:42.000000000 +0100 +++ new/libosmo-sccp-1.6.0/tests/xua/Makefile.am 2022-06-28 18:22:14.000000000 +0200 @@ -8,6 +8,6 @@ EXTRA_DIST = xua_test.ok xua_test.err noinst_HEADERS = sccp_test_data.h -noinst_PROGRAMS = xua_test +check_PROGRAMS = xua_test xua_test_SOURCES = xua_test.c sccp_test_data.c